电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> CGI
在Perl/CGI中使用模板-CGI教程,CGI文档
作者:网友供稿 点击:18
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
在perl/cgi中使用模板
作者: dave edis
日期: 2000年03月31日
from:(www.zdnet.com.cn)


<编者按:如果你不打算使你的网络应用系统出现混乱,那么就在perl/cgi脚本中使用html模板吧,这样可避免大量冗余html代码的出现。>

大部分网络应用程序中用了很多html代码。象hotmail这样的基于web的电子邮件系统,其中的登录屏幕、邮箱、发送信息、文件夹、菜单条、设置选项和其它栏目都使用了html代码。

网络程序是可以使用html的,但问题是html出现的地方太多,程序的每个需要显示的部分都需要设计html页面。这些html代码出现在哪里呢?就在你的perl源码中。这就意味着在你的程序中,将会插入数千行的html代码,你的perl程序将会变得很难调试,在调试html的屏幕显示时,也是困难重重,要是此时再换个其他人来编辑html,就更是雪上加霜,不用提有多混乱了。解决这些问题的办法是:把html代码放到后缀为“.html”的文件中去,作为模板,然后,在所写的perl/cgi 程序中,使用这些html模板文件。
为所有的那些html找一个新家
组织你的html模板的最好方法,就是让它们尽量靠近你的程序的存放目录。(要么同你的程序一起都放在同一目录中,要么把模板文件放在名为“/templates/”的子目录中。) 另外,在你给模板文件命名时,尽量取些描述性强的名字。我通常的命名方法是:下划线后面紧跟程序名,目的是用来区分常规的html文件和html模板。

例如,如果要创建基于web的电子邮件程序“web mail”,我们的模板就这样命名:

_webmail_login.html     # 登录

_webmail_message_list.html      # 显示信件

_webmail_message_read.html      # 阅读信件

_webmail_message_send.html      # 创建/发送信件

_webmail_message_erase.html      # 删除信件

_webmail_message_erase_confirm.html      # 确认删除

_webmail_logoff.html     # 退出


一看文件名,我们就很容易知道该文件是做什么的。一段时间以后,回过头来再作修改时,也不会搞错。如果你是同其他网络开发者协同工作,也不用担心他们在修改时会把程序搞乱。
现在,我们开始着手把所有的html从perl/cgi程序中移出去,放到html模板文件中,然后,还需要有个办法把它们显示出来。所以,我们将编制一个称为&template的perl子程序,程序代码如下:

sub template {

local(*file);# filehandle

local($file);# file path

local($html);# html data



$file = $_[0] || die "template : no template file specified\n";



open(file, "<$file") || die "template : couldnt open $file : $!\n";

while (<file>) { $html .= $_; }

close(file);



$html =~ s/\$(\w+)/${$1}/g;



return $html;

}


该程序中的大部分语句很简单,我们只是打开了一个模板文件,把其内容读出,并返回给程序。所用的技巧是使用了下面的正则表达式,它是用来搜索html模板中的perl变量, (如:“$date”) 把变量的值取代其符号表示。

$html =~ s/\$(\w+)/${$1}/g;  

其工作原理是这样的:正则表达式搜索以“$”开头的变量名,“\w”表示字符(a-z,a-z,0-9 或下划线),“+”意味着一个或多个字符。“\w+”两边的括号表示要把匹配的变量名存到“$1”中,最后, “${$1}”计算出变量的值。记住,变量名存放在$1中。下面为例子:

### 显示登录屏幕

print "content-type: text/html\n\n";

print &template("_webmail_login.html");


这样,尽管html是存放在模板中,并不在你的程序里,变量值也可以算出来。

复杂的模板和html段
在某些场合,仅仅使用单一的模板还不能完成相应的任务,如在使用搜索引擎时,搜索结果往往情况各异,又比如,在做天气预报的网页时,你会根据预报的结果,来选择相应的图像和文本显示。在这些场合,你可以使用多个模板文件来构成显示屏幕。例如,你可以把下面的搜索结果放在页面抬头和脚注之间:

_search_results_header.htmlf       # 页面抬头

_search_results_result.htmlf       # 结果行

_search_results_footer.htmlf       # 页面脚注


上面的每个部分被称为html片断,因为它仅是一个完整的html页中的一部分。我们把html片断文件的后缀规定为“.htmlf”,这就可以同完整的html文件区分开来。通过把html网页分解成html片断,你就可以在屏幕上显示出任何数量的搜索结果。

print &template("_search_results_header.htmlf");

foreach $result (@results) {

    print &template("_search_results_result.htmlf");

    }

print &template("_search_results_footer.htmlf");


在我们天气预报的例子中,也可以使用html片断。同前面的例子相比,所不同的是,html片断并不是一个接一个地显示在屏幕上,而是在另外一个网页中根据需要,加载相应的html片断。比方说吧,我们的天气预报的主文件模板为_weather.html,我们打算把未来三天的天气预报插入到主html网页上,我们引入变量“$day1 $day2 $day3”,对每一种可能的天气情况,我们创建一个小的html片断文件,然后,根据需要,进行加载。

### load html fragments for weather forecast

$day1 = &template("_weather_sunny.htmlf");

$day2 = &template("_weather_cloudy.htmlf");

$day3 = &template("_weather_snowing.htmlf");

print &template("_weather.html");

在html文件中,对于变量的表示方法,对于程序员来说是很熟悉的。(如,“today is $date”)。然而有些人则认为,如果使用其它符号来标识变量,而不是用“$”符号,感觉更容易些。即使你是第一次考虑用模板来代替程序行中的html代码,此时你也仅需作很少的修改,就可以在程序中使用象“%variable%” ,“ __variable__”或采用其它你觉得有意义的符号。我认为通过使用模板,要作这些小修改不是很难的。

本文作者dave edis是edis digital公司的总裁,其公司位于加拿大,提供网络媒体的解决方案。edis digital公司为世界各地的用户开发基于web的出版工具和应用程序。





文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·LB5000XP论坛配合SERV-U获取系统管理员权限-CGI教程,CGI文档
·CGI 版本-PHP教程,其它文章
·获取随机的由大小写字母和数字组成的八位密码-CGI教程,CGI文档
·Perl在NT下的快速简便安装方法 (转)-CGI教程,CGI文档
·实战 FastCGI(转)二-CGI教程,CGI文档
·XML和现代CGI应用程序-.NET教程,XML应用
·perl在win32平台上直接操作打印机-CGI教程,CGI文档
·实战 FastCGI(转)五(完)-CGI教程,CGI文档
·Python 快速入门(一)-CGI教程,CGI文档
·网站 PAGEVIEW 分析系统 CGI (原创)-CGI教程,CGI文档

最新文章
·顺便说说一些指示代码
·跟我学Perl(二)
·跟我学Perl(一)
·CGI教程(5)利用CGI解码FORM
·CGI教程(4)HTML 表单
·CGI教程(3)怎样发回文档给客户端
·CGI教程(2)怎样从服务器获得信息
·CGI教程(1)简介
·CGI教程(目录)
·Perl直接入门详尽指南




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号