Este endereço mudou para: http://andrem.wordpress.com

Os projetos que estavam aqui para download, podem ser baixados em: http://github.com/andrem
Textos
Cups Parte Um 
Dica Rewrite Ubuntu 
Dicas C 
Dicas Shell Script 
HTML Template Perl 
Ketchup 
Mysql pt BR 
Oscommerce Shopline 
Perl com C 
Pesquisa Cpan Firefox 
Pesquisa Perldoc Firefox 
Processos no Kernel Linux 
Search Plugin 
Tradutor em Perl 
User Cups Ubuntu 
Whois em PHP 


Links
Perl HTML::Template

Recentemente conheci um módulo do Perl para melhorar o desenvolvimento dos scripts em CGI, o Html::Template (http://search.cpan.org/~samtregar/HTML-Template-2.6/Template.pm). É um módulo simples de se mexer e provavelmente seu provedor já o tenha pré-instalado.

O Html::Template traz uma solução simples para o desenvolvimento Web com Perl. Através dele é possível você separar completamente seu código Perl de seu código HTML. O Html é criado em um arquivo separado, inserindo nele somente as marcações de entradas de dados, enquanto que o código Perl pode ser escrito em um outro arquivo sem se preocupar com inserções de códigos HTML.

Criando seu Arquivo de Template

Bom vou demonstrar como o HTML::Template funciona na prática, supondo que você já tenha um servidor Web com as devidas aplicações instaladas, criararemos nosso arquivo HTML que será nosso template:

html_template.tmpl

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/xhtml1-loose.dtd">
<html>
<head>
    <title> <TMPL_VAR NAME=TITULO>
</title>
    </head>
<body>
<TMPL_VAR NAME=TEXTO>
</body>
</html>


Bom este é um arquivo HTML simples, mas note que foi adicionado ao HTML algumas tags novas, são elas as responsáveis de receber os dados e formatar a página final no navegador. As tags TMPL_VAR funcionam como um marcador onde será substituído pela variável de nome ("NAME"): TÍTULO. Uma coisa a ser notada é a extensão atribuída ao arquivo, .TMPL, que informa ao nosso script que esse é o arquivo template.

Criando o Código Perl

pagina.pl

#!/usr/bin/perl

use HTML::Template;

#
# Informando o arquivo de template
#
my $template = HTML::Template->new(filename => 'html_template.tmpl');

#
# Definindo o titulo
#
$template->param(TITULO, "Teste Template");

#
# Texto que será impresso no corpo da página
#
$template->param(TEXTO, "<h1>Meu Primeiro Template</h1>");

print "Content-Type: text/html\n\n";

#
# Imprimindo os dados
#
$template->output;


O resultado no navegador é o titulo da página mais um texto (Meu Primeiro Template) no corpo da página.

A mágica de tudo isso é que o arquivo de template olha as tags do HTML normalmente, até que encontra as tags <TMPL_VAR>, especificando as variáveis que podem ser preenchidas com a chamada param().

Já o arquivo < i >pagina.pl< i > realiza a chamada my $template = HTML::Template->new() onde é especificado o arquivo de template (filename => 'html_template.tmpl'), depois realiza a chamada $template->param() que informa o nome da variável (TITULO) mais o valor dela (Teste Template), e por fim realiza a chamada $template->output () retornando todo o resultado.

Com essas informações já é possível criar uma página separando seu HTML do código Perl, no entanto o HTML::Template oferece muito mais recursos como :


<TMPL_LOOP>
<TMPL_INCLUDE>
<TMPL_IF>
<TMPL_ELSE>
<TMPL_UNLESS>


<TMPL_LOOP> : É uma tag um pouco mais complicada, pois ela permite que você determine uma seção de texto e atribua um nome a ela, passando um parâmetro através de listas associadas.

Código do Template

<TMPL_LOOP NAME="primeironome">

    <TMPL_VAR NAME="nome">

</TMPL_LOOP>


Código Perl

my %nomes = (
nome => "André"
);


<TMPL_INCLUDE> : Permite a inclusão de um template no template atual.

Código Template

<TMPL_INCLUDE NAME="novo_template.tmpl">


<TMPL_IF> : Incluí ou não incluí blocos de instruções baseados nos valores de um nome passado pelo parâmetro.

<TMPL_ELSE> : Incluí um bloco de instruções alternativo.

Código Template para exemplo do <TMPL_IF> e <TMPL_ELSE>

<TMPL_IF NAME="Categorias">
    <a href="categoria1.html">Categoria 1</a>
    <a href="categoria2.html">Categoria 2</a>
<TMPL_ELSE>
    <a href="index.html">Home</a>
</TMPL_IF>


<TMPL_UNLESS> : Oposto do <TMPL_IF> pois incluí um bloco de instruções se o valor for falso.

Código Template

<TMPL_UNLESS  NAME="Categorias">

    <a href="index.html">Home</a>

<TMPL_ELSE>

    <a href="categoria1.html">Categoria 1</a>

    <a href="categoria2.html">Categoria 2</a>

</TMPL_UNLESS >



Finalizando

O HTML::Template pode facilitar muito o desenvolvimento Web por ser simples e fácil de se aplicar, aliás este blog usa ele em seu desenvolvimento :-).

Mais informações:
http://html-template.sourceforge.net/


André Osti de Moura
andreoandre [a] gmail [.] com