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

是的,您可以试试 the usenet newstand
(<http://criticalmass.com/concord/>。
所有comp.infosystems.www.* 讨论群组的文章都收集在那儿*。同时,cgi-perl

libwww 这两个邮递论坛他们也有收集。

【译者】您同时可以试试 dejanews (<http://www.dejanews.com/> 、
altavista (<http://www.altavista.digital.com/> ,和 hotbot
(<http://www.hotbot.com/> 这几个搜寻引擎/资料库。 dejanews
(<http://www.dejanews.com/> 甚至连 tw.bbs.* 都收集(其他两个或
许也有,但译者没试过)。

---------------------------------------------------------------------------


2.0 - modules (模组)

---------------------------------------------------------------------------

q2.1: 我是不是该用 perl cgi modules* 来写 cgi scripts
?自己做不是比较容易
吗?

【译者】 cgi modules 在此指 cgi.pm 及其他 cgi::* 的模组;详见
q2.4 。

这完全取决於您要做的是什麽。cgi modules 较适合重量级的 cgi scripts
。如果
是简单的 scripts 的话,自己做或者是用 cgi lite
这个模组会简便许多。如果您
真的愿意,您甚至可以用旧的 perl4 cgi-lib.pl 这个 library*。

【译注】作者 tom c. 之所以这麽说是因为他基本上不赞成使用
cgi-lib.pl ,有兴趣的读者可以看他写的 why i am not fond of
cgi-lib.pl (<http://www.perl.com/perl/info/www/!cgi-lib.html>
(为什麽我不欣赏 cgi-lib.pl )。

---------------------------------------------------------------------------

q2.2: 如何知道某个 module 该怎麽个用法?

大多数 modules 的使用说明是直接嵌在程式里的*。如果是这样的话,您可以用
pod2man 这个 script 来阅读使用指南:

% pod2text name_of_module.pm
% pod2man name_of_module.pm | nroff -man | more

【译注】如果您在 *.pm 档中看到 ``=head1、``=cut 这类的东西便
是显示使用说明有附在里头。这是 larry wall 设计的 pod (plain old
document) 格式。详见 perlpod manpages。

---------------------------------------------------------------------------

q2.3: 有哪些 perl4 的 cgi 或 www的 libraries ?

最广为使用的 perl4 cgi library 是 steve brenner 的 cgi-lib.pl
(<http://www.bio.cam.ac.uk/web/form.html>。

---------------------------------------------------------------------------

q2.4: 有哪些给 perl5 使用的 cgi modules?我该用哪个?为什麽?

cgi.pm
(<http://www-genome.wi.mit.edu/ftp/pub/software/www/cgi.pm.tar.gz>*
这个很棒的 module 在功能上和部分 cgi::* modules
相重叠。如果您不想和多
重 modules
打交道的话,您可以只用这一个。我们等一下在後头会给您看一个
用 cgi.pm 来替 cgi scripts 除错的实例。

此外,lincoln (lincoln stein;cgi.pm 的作者)还写了一本讨论 web

cgi 非常好的书,叫 how to set up and maintain a world wide web
site
(<http://www.aw.com/cp/stein2e.html>。

【译者】建议读者多使用 cgi.pm 。cgi::* 已经有很长一段时间没
有更新了,而 cgi.pm 则不断的有改良的新版推出,并已加入对
fastcgi (<http://www.fastcgi.com/> 的支援,因此对 fastcgi
的使用者也相当方便。此外,mod_perl
(<http://www.osf.org/~dougm/apache/> (apache
(<http://www.apache.org/> 的 perl module)中所附的 cgi::xa
,也是由 cgi.pm 改进而来的。 cgi.pm 让使用者免除自己做低阶资
料处理(如印 http 标头、替 form, cookies 资料解码等)的麻
烦。

cgi::* 模组套件
(<http://www-genome.wi.mit.edu/ftp/pub/software/www/cgiperl/>
这些模组原先大多是由 tim bunce 所写,现在则由 lincoln stein
来负责维
护。它们的功能包括了帮您产生及处理 form ,替 cgi
程式除错,以及在不同
的 forms 之间维系一个状态值。

cgi lite
(<http://dongpo.math.ncu.edu.tw/perl/cpan/authors/id/shgun/cgi_lite-1.62.pm.gz>
)
这个轻量级的 module 是 cgi::* modules
之外的另一个选择。它可算是在老旧
的 cgi-lib.pl (<http://www.bio.cam.ac.uk/web/form.html>
之上改良、加
料後的产物。

以上三者均有能力处理 multipart form 资料(即上传)。

---------------------------------------------------------------------------

q2.5: 为什麽这麽多 perl cgi libraries 都是 object-oriented
(物件导向)的?
我对用物件导向来写程式一窍不通。难道就没有简单一点,给不会物件导向的人使用
的 libraries 吗?物件导向有多难?

其实使用物件导向的 modules 并不难。先去看看 tom christiansen 的 easy
intro
to using perl objects
(<http://perl.com/perl/everything_to_know/easy_objects.html>
(简单介绍如
何使用 perl 物件)吧。

前头提到的 cgi modules 用起来真的是很容易!这里有一个用 cgi lite 印出
form
资料的实例*:

【译者】cgi.pm 的使用说明
(<http://www-genome.wi.mit.edu/ftp/pub/software/www/>中有更多范
例可供参考。

#!/usr/local/bin/perl -w
use cgi_lite;
$cgi = new cgi_lite;
%data = $cgi->parse_form_data;
print "content-type: text/plain", "\n\n";
foreach $key (keys %data) {
print $key, " = ", $data{$key}, "\n";
}
exit 0;

要注意的是,即使您机器上的 perl
不是您装的(您不是系统管理者),或是您权限
不够无法将这些 modules 和其他的 perl library
档案安装在同一个地方,您还是
可以使用这些 modules 的 --
只要将它们摆在一个自己方便的地方,然後在您的
script 开始处加上*:

begin {
unshift @inc, "/your/dir/favorite/place";
}

【译者】建议改用较新的方式:

use lib qw(/your/dir/favorite/place);

好。以下是一个用到 cgi::* modules 的例子:

#!/usr/local/bin/perl -w
use cgi::form;
$cgi_form = new cgi::form;
print <<end_of_header;
<html>
<head><title>看著我做!</title></head>
<body>
<h1>看著我做!</h1>
end_of_header
print $form->startform;
## 产生一个单行输入栏位 (text field)
print 姓名: ;
print $form->textfield(name), "<br>\n";
## 产生一组单选按纽 (radio buttons)
print <p>您住哪儿: <br>;
print $form->radio_group(-name => where,
-values => [北美洲,
南美洲,
欧洲,
澳洲,
亚洲,
南极洲],
-default => 北美洲,
-linebreak => true);
## 产生一个多行输入栏位 (textarea)
print 意见: ;
print $form->textarea(comments, undef, 5, 40);
print "<p>";
print $form->reset;
print $form->defaults;
print $form->submit(送出!, submit);
print $form->endform;
print "</body></html>";

reset、defaults,及submit三种方法( methods )
会产生不同的类型的按钮。reset
这个按钮让您把目前 form
栏位中所填的资料洗掉,并显示属於上一个状态(或回
合)的资料。 defaults 这个按钮则是将form 栏位资料彻底洗去。还有 submit

个方法产生一个送出钮以便让人将资料送至 server 处。

您看,不是很容易吗?

文章整理:西部数码--专业提供域名注册虚拟主机服务
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号