-+  Documenti
-+  Eventi
-+  Contatti
-+  Blog
Gruppi di Mongers italiani

bologna.pm

nordest.pm

pisa.pm

roma.pm

salerno.pm

torino.pm


Progetto Opliti
Vuoi contribuire al progetto opliti ? Leggi come funziona IGWiki e inizia a tranquillamente a documentare il modulo che preferisci. Il sistema avviserà i revisiori delle tue modifiche. Se i tuoi contributi saranno ritenuti validi provvederemo subito a pubblicarli.




 

HTML::Template

opliti
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. ;-)