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>,这个看你的喜好了.
简单的例子
html.tmpl文件的内容
下面对变量的命令小小的介绍一下
我现在分开做三部分写,第一部分写perl中解析html的写法,另一部分写html中这个模块的标记是怎么样写的,以这样来分别介绍常用的一些标记用法
TMPL_VAR
普通变量的插入.记的给内容存成*.tmpl的文件.TMPL_VAR是做为Template Variable的意思。这样是为了和html分开.
注,上面可以在后面加入escape=html这样来做url的编码。如<TMPL_VAR TEST escape=html>.
TMPL_LOOP
循环这个是用在重复输出内容到一个地方。如表格
注,上面最开始的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]