网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 网站开发-> CGI/PERL-> Perl CGI程式写作常问问题集(三)

Perl CGI程式写作常问问题集(三)
作者:佚名 来源:InterNet 加入时间:2005-3-30
相关文章
  • Perl CGI 程式写作常问问题集(六)
  • Perl CGI 程式写作常问问题集(五)
  • Perl CGI 程式写作常问问题集(四)
  • 中文版Perl CGI程式写作常问问题集(二)
  • Perl CGI 程式写作常问问题集(一)
  • 相关书籍:
    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 处。

    您看,不是很容易吗?


    [文章录入员:nancy]

    相关文章
  • Perl CGI 程式写作常问问题集(六)
  • Perl CGI 程式写作常问问题集(五)
  • Perl CGI 程式写作常问问题集(四)
  • 中文版Perl CGI程式写作常问问题集(二)
  • Perl CGI 程式写作常问问题集(一)
  • 相关书籍:
    本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    CGI/PERL
    ASP/ASP.NET
    PHP技术
    JSP技术
    XML技术
    CGI/PERL
    WEB服务器
    WordPress专题
    其它
    电脑教程阅读排行
    ·perl中的日期处理
    ·深入研究表单提交方式:GET/P...
    ·如何利用Perl开发Intern...
    ·CGI应用程序开发基础
    ·本地调试PERL CGI程序
    ·PERL与MySQL(DBI接口...
    ·PerlScript编写ASP
    ·CGI编程--Perl的安装配置
    ·Perl用于实现遗传算法
    ·ASP、CGI、ISAPI、OD...