Chinaunix首页 | 论坛 | 博客
  • 博客访问: 592323
  • 博文数量: 40
  • 博客积分: 7274
  • 博客等级: 少将
  • 技术积分: 410
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-20 15:00
个人简介

Expired

文章分类
文章存档

2011年(1)

2008年(3)

2007年(17)

2006年(10)

2005年(9)

分类: 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"
阅读(2123) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~