![]() |
||||||||||||||||||||||
| 网络数据库教程 - 第五天 | ||||||||||||||||||||||
| Richard Dice | ||||||||||||||||||||||
|
|
|
||||||||||||||||||||
|
第一页 必不可少的CGI.pm 在过去的几天里我们已经谈了许多重要的事项。当然谈得都不是太深入。今天我将用一个实例比较细致地阐述一下过去几天所学的概念。而且几天还会涉及一些新的问题。 在各种有关Perl CGI编程的讨论中常常会提到Lincoln Stein的CGI.pm 。总体来说,CGI.pm 所用的编程理念和我在本教程中所倡导的完全相反。 从一开始,我就在试图帮助你们建立互动、动态生成的网页。这也是嵌入式HTML编程的初衷,而且它也能使网站的编码和组织更简便快捷。 而CGI.pm的观点是将网络编程分离出来,它给你一种感觉仿佛你是在用CGI.pm搭建一个网页,例:
#!/usr/bin/perl
use CGI;
$query = new CGI;
print $query->header(),
$query->start_html(-title=>'Made with CGI.pm'),
'This is what I mean by ',
$query->b('abstracted'),
'.',
$query->end_html();
exit 0;
该程序的执行结果是一个简单的HTTP头,一个起始HTML块(包括一个<TITLE>),几行文字,以及标准的HTML结束块。注意所有这些都是用CGI的$query
对象以及与其相关的方法编制的:
Content-type: text/html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML><HEAD><TITLE>Made with CGI.pm</TITLE>
</HEAD><BODY>This is what I mean by <B>abstracted</B>.</BODY></HTML>
我总是尽量避免使用这种编程方法,但是我也不得不承认这种方法有时候用起来很顺手。
CGI.pm的优点不在于它的抽象性,而在于它所提供的工具。CGI.pm有一个非常强大的cookie处理器以及表单参数解码方法。 我们都了解表单,它是HTML,而且它具有很多用途。 作为一个网络程序员,表单是从用户处收集的只要方法。当一个用户点击递交(Submit)按钮时,浏览器将用户输入的信息打包编码然后发送给你的CGI程序进行处理。而CGI程序的职责就是要解包,解码和使用表单中的内容。 这个过程很烦琐,为什么不让CGI.pm帮你处理这些事情呢?表单参数可以用param方法提取:
#!/usr/bin/perl
#
# BAR.cgi is a simple Perl CGI program using CGI.pm.
#
# A Web page with a form containing the FOO textarea
# is meant to submit to BAR.cgi (pay attention to
# the "param" method).
#
use CGI;
$query = new CGI;
print $query->header(),
$query->start_html(-title=>'Test of the param method'),
'The value of the FOO parameter is: ',
$query->param('FOO'),
$query->end_html();
exit 0;
这就是用CGI.pm解决这个问题的方法。在以后的某些ePerl代码中我还将用到CGI.pm,但只是为了利用其param方法的优势。 >>
网络数据库教程 |
||||||||||||||||||||||
| 本栏目内容归Wired
Digital Inc.所有, |
||||||||||||||||||||||