Mar 13

[原]Perl的HTML::KTemplate模块 阴

linuxing , 14:56 , 编程 » Perl , 评论(0) , 引用(0) , 阅读(34743) , Via 本站原创 | |
    前一篇日志中介绍了如何利用正规表达式的替换功能来实现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
本地下载:
安装:
引用
# wget http://search.cpan.org/CPAN/authors/id/K/KA/KASPER/HTML-KTemplate-1.33.tar.gz
# 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脚本
引用
# cat ktemplate.pl
#!/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模板的存放路径(对应上述脚本打开的地方):
引用
# mkdir templates
# tree
.
|-- ktemplate.pl
`-- templates

然后,编写HTML模板:
引用
# cat template.tpl
<html>
<!-- 用[% %]来定义变量的位置
<head><title>[% TITLE %]</title>
<body>

Hello! [% TEXT %]<p>

<!-- 循环开始标记,并不是注释哦 -->
<!-- BEGIN LOOP -->

[% TEXT %]<br>

<!-- 循环结束标记 -->
<!-- END LOOP -->

</body>
</html>

3、运行结果
引用
# perl ktemplate.pl
<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标量代替脚本中的字符串即可实现动态的更新。
源码文件:
内文分页: [1] [2]
Tags: ,
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]