Expired
分类: LINUX
2006-01-22 21:31:13
使用模板技术,可以大量节省代码的编写量,提高代码效率,便于调试。一般我们把常用的HTML代码放到后缀为“.html”的文件中作为模板,并将 这些模板文件统一放在名为“templates/”的子目录下。然后在所写的Perl/CGI 程序中,使用这些HTML模板文件。)另外,在你给模板文件命名时,尽量取些描述性强的名字。通常的命名方法是:下划线后面紧跟程序名,目的是用来区分常 规的HTML文件和HTML模板。
一个典型的例子,比如 _header.html,存放网页头的一些公共信息;_footer.html 存放网页尾部相关信息。
### _header.html
Content-type:text/html
$title
## _footer.html
为了在Perl里面调用这些模板,我们将编制一个称为Template的Perl子程序,程序代码如下:
sub Template {
my $file;# file path
my $HTML;# HTML data
$file = $_[0] || die "Template : No template file specified.\n";
open(FILE, "<$file") || die "Template : Couldn't open $file : $!\n";
while () { $HTML .= $_; }
close(FILE);
$HTML =~ s/(\$\w+)/eval "$1"/ge;
return $HTML;
}
该程序中的大部分语句很简单,我们只是打开了一个模板文件,把其内容读出,并返回给程序。所用的技巧是使用了下面的正则表达式,它是用来搜索HTML模板中的Perl变量, (如:$title) 把变量的值取代其符号表示。
完整的程序代码如下:
#!/usr/bin/perl -w
use strict;
my $title = "Hello, world !";
print &Template("templates/_header.html");
print &Template(templates/_footer.html");
============================================================================
[附: bash shell 也可以哦 !]
function template () {
file=$1
[ -z "$file" ] && die "No template file specified."
eval echo -e "\"`cat $file`\""
}
#!/bin/sh
title="Hello, world !"
template "templates/_header.html"
template "templates/_footer.html"