HTML::Template
img://www.isogest.org/Home/guest/images/opliti.png
HTML::Template è un modulo adatto per lavoretti piccoli e veloci, cioè quando dovete per forza usare un template ma non ne avete voglia. Non è sintatticamente elegante come Petal, non è potente e versatile come TT2, è difficilmente scalabile per progetti grandi, ma funziona bene ed è esattamente ciò che vi serve per quanto detto sopra! Il modulo, scritto interamente in Perl, suporta semplici sostituzioni di variabili, condizioni e loop.
Questo esempio mostra le principali caratteristiche di HTML::Template:
<html>
<head>
<title><TMPL_VAR NAME="TITOLO"></title>
</head>
<body>
<p>La lista della spesa:</p>
<ul>
<TMPL_LOOP NAME="L_SPESA">
<li><TMPL_VAR NAME="PRODOTTO">
</TMPL_LOOP>
</ul>
<TMPL_IF NAME="L_FRUTTA">
<ul>
<TMPL_LOOP NAME="L_FRUTTA">
<li><TMPL_VAR NAME="FRUTTO">
</TMPL_LOOP>
</ul>
<TMPL_ELSE>
<p>Non serve frutta.</p>
</TMPL_IF>
</body>
</html>
Il titolo è una semplice sostituzione, mentre poi vi sono due loop, uno dei quali (quello relativo alla frutta) è inserito in un blocco delimitato da una condizione: se l'array L_FRUTTA esiste viene creata la lista non numerata, altrimenti viene visualizzato il testo "Non serve frutta."
Ed ecco il programmino Perl che popola e stampa il template:
#!/usr/local/bin/perl
use strict;
use warnings;
use HTML::Template;
my @l_spesa = (
{ PRODOTTO => 'Zucchero' },
{ PRODOTTO => 'Yogurt' },
{ PRODOTTO => 'Pane' },
{ PRODOTTO => 'Cereali' }
);
my @l_frutta = (
{ FRUTTO => 'Banane' },
{ FRUTTO => 'Mele' }
);
my $t = new HTML::Template(filename => 'miotpl.html');
$t->param(
TITOLO => "La lista della spesa",
L_SPESA => \@l_spesa,
L_FRUTTA => \@l_frutta
);
print $t->output();
Ciò che va passato al modulo è dunque un hash, che può contenere reference a degli array (necessari per popolare i loop) che a loro volta devono contenere reference ad altri hash. Il sistema è dunque immediato e semplice, e per i vostri attimi quick&dirty è l'ideale.
Buon divertimento. ;-)
|