perl HTML::Template模块应用实例

发布时间:2019-12-19编辑:脚本学堂
近来要做web应用中,研究了一下perl的模板技术,从没有写过web。真是痛苦。在编程技术中模板(Template)技术是非常常用的一种技术,这样可以分离美工和程序员。

    perl中HTML::Template模块应用实例,供大家学习参考。

    近来要做web应用中,研究了一下perl的模板技术,从没有写过web。真是痛苦。在编程技术中模板(Template)技术是非常常用的一种技术,这样可以分离美工和程序员。也就是所谓的MVC.
模板原理其实很简单,先做好html的样本,然后用程序读进来,在插入变量。最后输出。这样就分开了html和程序本身。

    在perl中就是用HTML::Template是个很常用的模块,用来实现模板技术。在HTML::Template不但可以插入变量,还可以放条件,判断和文件插入。

    HTML::Template模块的基本标记

这个模块有一些自己的HTML的标记。如<tmp_var>,<tmpl_if>,</tmpl_if>,<tmpl_loop>等,
<TMPL_VAR NAME=”TEST”> # 单个变量
<TMPL_LOOP NAME=”TEST”> #循环
<TMPL_IF NAME=”TEST”> # 条件语句
<TMPL_ELSE> # 条件语句
<TMPL_UNLESS NAME=”TEST”> # 条件语句
<TMPL_include NAME=”temp2.html”> #  插入

这些标记可有二种写法,<tmpl_var name=parameter>和<tmpl_var parameter>,这个看你的喜好了.
简单的例子
 

复制代码 代码如下:
#!/usr/bin/perl
use strict;
use warnings;
use HTML::Template;
 
my $html = new HTML::Template ( filename=>"html.tmpl");   #new一个对象出来。其中需要指定一个html的文件
$html->param( TEST => 'hello!' );       # 给html标准替换成这个变量的值
print $html->output;                 #html的输出

html.tmpl文件的内容
 

复制代码 代码如下:
<html><head>
<title>HTML::Template test</title>
</head><body>
<p>TEST:<TMPL_var NAME="TEST"> </p> 
</body></html>

下面对变量的命令小小的介绍一下

我现在分开做三部分写,第一部分写perl中解析html的写法,另一部分写html中这个模块的标记是怎么样写的,以这样来分别介绍常用的一些标记用法
 
TMPL_VAR

普通变量的插入.记的给内容存成*.tmpl的文件.TMPL_VAR是做为Template Variable的意思。这样是为了和html分开.
 

复制代码 代码如下:
#perl中的写法.
$html->param( name => [
            {name => 'tom', age => '21'},
            {name => 'fukai', age => '25'},
        ]);
 
#html中的内容
<ul>
<TMPL_LOOP NAME="name">
        <li><TMPL_VAR NAME="name">:<TMPL_VAR NAME="age"></li>
</TMPL_LOOP>
</ul>     
 
#html输出
<ul>
    <li>tom:21</li>
     <li>fukai:25</li>
</ul>

注,上面可以在后面加入escape=html这样来做url的编码。如<TMPL_VAR TEST escape=html>.

TMPL_LOOP

循环这个是用在重复输出内容到一个地方。如表格
 

复制代码 代码如下:
#perl中的写法.
$html->param( name => [
            {name => 'tom', age => '21'},
            {name => 'fukai', age => '25'},
        ]);
 
#html中的内容
<ul>
<TMPL_LOOP NAME="name">
        <li><TMPL_VAR NAME="name">:<TMPL_VAR NAME="age"></li>
</TMPL_LOOP>
</ul>     
 
#html输出
<ul>
    <li>tom:21</li>
     <li>fukai:25</li>
</ul>

注,上面最开始的name是指参数的名字. TMPL_LOOP  和 /TMPL_LOOP  之间是重复的内容.                                                       
 
TMPL_IF, TMPL_ELSE, TMPL_UNLESS

条件语句,这些和perl基本的语法一样.这样会在不同的情况插入不同的内容.
 

复制代码 代码如下:

#perl中的写法.
$html->param( test => 1);
 
#html
<TMPL_IF NAME = "test">
<p>这个test=>1</p>
</TMP_IF>
 
#html输出
<p>这个test=>1的</p>

TMPL_INCLUDE

插入包含另一个html的文件.

这个主要是在一个html中插入另一个html
用法直接在html中写。自然会解析成别的一个html的内容到当前的网页中,这个perl中不用写什么
<TMPL_INCLUDE NAME="temp2.html">

最后说明:

在perl文件中可以写成如下类型:
 

复制代码 代码如下:

#!/usr/bin/perl -w
use strict;
use HTML::Template;

my $template = HTML::Template->new(filename => 'perl-html-template.tmpl', die_on_bad_params => 0);

$template->param(title        => 'HTML Template Example');
$template->param(is_english   => '');
$template->param(is_chinese   => '0');
$template->param(english_text => 'It is Englist');
$template->param(chinese_text => '这是汉语。');
$template->param(loop         => [
    {title => [
        {is_english   => '1'},
        {english_text => ''},
    ]},
    {title => [
        {is_chinese   => ''},
        {chinese_text => '这是汉语。'},
    ]},
    {title => []},
]);
$template->param(copy_right   => 'Copyright (C) hankundev.blog.sohu.com 2008 All Right Reserved.');

print "Content-type: text/htmlnn";
print $template->output();

这样既可执行此perl文件输出到一个html文件中即可,查看html文件就行。

转载自:扶凯[http://www.php-oa.com]