我的测试阐明了网页生成性能的三种通用Perl技术。
下面整体看一下各个技术的详细内容
HERE文档被称标题等级构造器中的Perl数据网页。它们能够允许纯文本被嵌入到一个文件中。因为HTML是纯文本,HERE文档就可以提供一个直接的解决方法。它们也支持不同的赋值方式,这就意味着纯文本能包含Perl变量。下面是一个例子:
#!/usr/bin/perl –w
my $color = "red;
print<<HERE;
This car is $color.
这一代码结果将打印出,“This
car is red”。HERE 文档的不足之处是它的代码读起来很晦涩。在Perl代码中的大型的HERE文档将会打乱常规的程序流程图。
一种较为清晰的方法是把源HTML模板化。HTML存放在一个独立的文件中,通常是以XML标签的形式出现。HTML文件能被CGI程序读入,当检测到这些XML标签,XML标签将被动态内容取代。这就是HTML::Template模块方法,以下的代码片断说明了HTML的模板化:
<HTML><BODY>
This car is <TMPL_VAR NAME="COLOR">.
</BODY></HTML>
这里的Perl代码能处理之:
And here's the Perl code to process it:
#!/usr/bin/perl –w
use HTML::Template;
my $template = HTML::Template->new(filename=>"temp.html");
template->param(COLOR=> "red");
print template->output;
COLOR模板变量值"red",取代了<TMPL_VAR>标签。模板化提供了比HERE文档更清晰的方法,因为前者的代码存放在一个文件,而数据放在加一处。许多服务器方面的技术,从SSI到ASP,都使用了模板方式。
这一模块把HTML标签当成代码,每一个HTML标签都对应有一个Perl子程序。你可以不采用常规的Perl语法来定义HTML。CGI.pm与HERE文档相反。下面的例子正好说明了使用CGI.pm的方法:
#!/usr/bin/perl –w
use CGI ":standard";
my $q = new CGI;
print $q->start_html, "This car is red", $q->end_html;
当然,这三个内容不仅仅这些,我们只是谈及它的测试领域。