Thread HTML ausgabe mit variable: bekomm das nicht hin
(12 answers)
Opened by Gast at 2003-08-19 01:18
Erstmal etwas stilistisches:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # ersetze while(<LISTE>) { push(@Zeilen,$_); } # durch @Zeilen = <LISTE>; # ersetze foreach (@Zeilen) { print "$_"; } # durch print @Zeilen; Dann zu deiner Frage: Ja, natuerlich geht das. Du hast nach dem Einlesen den HTML-Code ja wohl in @Zeilen, darin kannst du dann deine Ersetzungen vornehmen. Damit du nicht in jeder einzelnen Zeile ersetzen musst, waere es dafuer aber praktischer, alles nur in einem String zu haben. Fuer ein einfaches Templatesystem muss man sich erstmal eine Markierung ausdenken, die im Template die Variablen auszeichnet und die nicht zufaellig auch so im Template vorkommt. Als Beispiel nehme ich hier mal "%%Irgendwas%%" fuer eine Variable mit Namen "Irgendwas". Im Programm speichert man die Variablen der Einfachheit halber in einem Hash, dessen Schluessel die Namen sind. Hier ein kleiner Beispielcode dafuer: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 my %TmplVariablen = ( User => "Niemand", Land => "Takatukaland", ); my $Text; open (LISTE, "< $seite") or die "Datei $seite konnte nicht geoeffnet werden: $!"; { local $/; $Text = <LISTE>; } close LISTE; # Hier werden die Variablen ersetzt $Text =~ s/%%(\w+)%%/exists $TmplVariablen{ũ} ? $TmplVariablen{$_} : ""/eg; print "Content-type: text/html\n\n"; print $Text; Dabei wuerde jetzt der Text Ich bin <b>%%User%%</b> und wohne in %%Land%%. ersetzt durch Ich bin <b>Niemand</b> und wohne in Takatukaland. Fuer solche Templates gibt es aber schon sehr schoene Loesungen auf CPAN, wie z.B. HTML::Template oder - richtig ausgefeilt - HTML::Mason oder gar HTML::Embperl. |