CGI::FastTemplate

Web alkalmazásként használjuk a Perl-t, szükségünk lesz a CGI modulra. A PHP-ben is ismeretes class.FastTemplate.php Perl megfelelőjét a CPAN telepítőn keresztül, vagy ActivePerl haszálata esetén a ppm csomagkezelővel telepíthetjük. A CGI::FastTemplate kezelése igen hasonló a PHP-ben használthoz, és nagyon egyszerű. Azonban a Smarty-hoz ezen egyszerűség okán nem hasonlítható. A Smarty-hoz inkább a Template Tool Kit hasonlítható. Példaként a FastTemplate használatára nézzük meg a környezeti változók és az átadott paraméterek táblázatát.

#!c:/Perl/bin/perl.exe
  use CGI;
  use CGI::FastTemplate;
 
  $cgi = new CGI;
  print $cgi->header(
		-expires => 'now',
		-meta    => {
			'last-modified' => localtime,
			'ETag'          => localtime,
			'cache-control' => 'no-cache',
			'pragma'        => 'no-cache',
			'Content-type'  => 'text/html',
			'charset'       => 'iso-8859-2'
		}
);
 
  my $tpl = new CGI::FastTemplate("./templates/");
 
  $tpl->define('main'=>'env.tpl',
               'table'=>'table.tpl',
               'row'=>'row.tpl'
  );
 
  $tpl->assign(VARNAME=>'<b>Name</b>',VALUE=>'<b>Value</b>');
  $tpl->parse(ROWS=>".row");
 
  foreach $var (sort(keys(%ENV))) {
      $val = $ENV{$var};
      $val =~ s|\n|\\n|g;
      $val =~ s|"|\\"|g;
      $tpl->assign(VARNAME =>$var, VALUE=>$val);
      $tpl->parse(ROWS=>".row");
  };
 
  $count = scalar($cgi->param);
  if ($count>0) {
    $tpl->assign(VARNAME=>'<b>Name</b>',VALUE=>'<b>Value</b>');
    $tpl->parse(ROWS=>".row");
 
    foreach $name (sort($cgi->param)) {
        $value = $cgi->param($name);
        $tpl->assign(VARNAME =>$name, VALUE=>$value);
        $tpl->parse(ROWS=>".row");
    };
  };
 
  $tpl->parse(MAIN => ["table", "main"]);
 
  $tpl->print();

env.tpl

<html>
  <body>
    $MAIN
  </body>
</html>

table.tpl

<table border=1>
  $ROWS
</table>

row.tpl

<tr>
  <td valign="top" align="right">$VARNAME</td><td>$VALUE</td>
</tr>

Érdekes lehet még a kapott paraméterek esetén a kódolás/dekódolás. Ezekhez az URI::Escape és HTML::Entities modulokban található encode_entities és decode_entities függvények alkalmasak. Ezeknek van UTF-8 specifikus változatuk is.