前一篇日志中介绍了如何利用正规表达式的替换功能来实现Perl脚本和HTML模板的配合使用。正如日志中所说的,这方便把涉及和脚本分开处理,分工合作,效率可以大大的提高。但文中提到的技术,仅适合小型站点使用,若HTML中有一些特殊字符时,容易发生替换错误,而且转换效率不高。
今天介绍的,是一个叫HTML::KTemplate的模板。HTML::KTemplate模块是由Kasper Dziurdz先生开发的一款功能强大的HTML代码解析的模块,模块功能非常强大,功能灵活,而不臃肿。我使用CPAN上的说明做个演示,剩余的功能参数可自行斟酌。
一、安装
HTML::KTemplate模板
官方网站是:http://html-ktemplate.sourceforge.net/
CPAN上的说明:http://search.cpan.org/~kasper/HTML-KTemplate-1.33/KTemplate.pm
本地下载:
安装:
# tar xzvf HTML-KTemplate-1.33.tar.gz
# cd HTML-KTemplate-1.33
# perl Makefile.PL
Checking if your kit is complete…
Looks good
Writing Makefile for HTML::KTemplate
# make test
# make install
Manifying blib/man3/HTML::KTemplate.3pm
Installing /usr/lib/perl5/site_perl/5.8.8/HTML/KTemplate.pm
Installing /usr/share/man/man3/HTML::KTemplate.3pm
Writing /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/HTML/KTemplate/.packlist
Appending installation info to /usr/lib/perl5/5.8.8/i386-linux-thread-multi/perllocal.pod
# perl -e "use HTML::KTemplate;"
※ 留意上述红色标记,是HTML::KTemplate模板的安装路径。最后一步是测试模板是否可以正常使用。
二、简单示例
这个示例是CPAN上的说明,虽然简单,但恰好可以说明基础的使用方法。
1、perl脚本
#!/usr/bin/perl -w
#使用HTML::KTemplate模板
use HTML::KTemplate;
#设定模板的根目录路径,用于打开HTML模板文件,并创建一个$tpl实例
$tpl = HTML::KTemplate->new('templates/');
#使用$tpl实例的assign方法定义变量值
$tpl->assign( TITLE => 'Template Test Page' );
$tpl->assign( TEXT => 'Some welcome text …' );
#定义循环,其中也定义循环中使用的变量
foreach (1 .. 3) {
#LOOP是一个循环标记
$tpl->assign( LOOP,
TEXT => 'Just a test …',
);
}
#使用$tpl实例的process方法执行HTML模板替换
$tpl->process('template.tpl');
#使用$tpl实例的print方法输出结果
$tpl->print();
2、HTML模板
首先,创建HTML模板的存放路径(对应上述脚本打开的地方):
# tree
.
|– ktemplate.pl
`– templates
然后,编写HTML模板:
<html>
<!– 用[% %]来定义变量的位置
<head><title>[% TITLE %]</title>
<body>
Hello! [% TEXT %]<p>
<!– 循环开始标记,并不是注释哦 –>
<!– BEGIN LOOP –>
[% TEXT %]<br>
<!– 循环结束标记 –>
<!– END LOOP –>
</body>
</html>
3、运行结果
<html>
<head><title>Template Test Page</title>
<body>
Hello! Some welcome text …<p>
Just a test …<br>
Just a test …<br>
Just a test …<br>
</body>
</html>
蓝色部分是被perl脚本中的变量替换的内容,使用perl标量代替脚本中的字符串即可实现动态的更新。
源码文件:
设计HTML框架网页
HTML的链接路径类型
HTML的行内和块容器
XHTML代码的主要规则
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/110935.html