[Inhalt] -> [Template] |
[info] |
||
Da CGI-Skripte in der Regel größere Mengen an HTML-Code ausgeben und die Verwendung der HTML-Methoden des Moduls CGI nicht besonders freundlich mit Web-Designern umgehen, bietet sich die Trennung von HTML-Code und Skript an.
HTML::Template stellt die Funktionalität zur Verfügung:
use CGI; use HTML::Template; my $q = CGI->new; my $template = HTML::Template->new(filename => "/path/to/template"); my @loop; # fill the loop foreach (method_to_generate_rows()) { push @loop, { foo => $foo, bar => $bar, baz => $baz, }; } $template->param( loop => [ @loop ], # TMPL_LOOP name => $some_name, # TMPL_VAR text => $some_text, # TMPL_VAR bool => 1, # TMPL_IF ); print $q->header(); print $template->output;
In der korrespondierenden HTML-Template werden die gesetzten Variablen vor der Ausgabe eingefügt:
<html> <head><title>Something</title></head> <body> <!-- hier die Verwendung von Variablen --> <p>Hier die Aufstellung von <TMPL_VAR NAME=name> und etwas Text:</p> <p><TMPL_VAR NAME=text></p> <!-- hier die Verwendung einer Schleife --> <table> <TMPL_LOOP NAME=loop> <!-- Schleifenanfang --> <tr> <td><TMPL_VAR NAME=foo></td> <td><TMPL_VAR NAME=bar></td> <td><TMPL_VAR NAME=baz></td> </tr> </TMPL_LOOP> <!-- Schleifenende --> </table> <!-- hier die Verwendung einer Abfrage --> <TMPL_IF NAME=bool> <p>Gib diesen Text aus</p> <TMPL_ELSE> <p>oder diesen</p> </TMPL_IF> </body> </html>