perlfaq2 - perl常问问题集,第二篇

目录


篇名

perlfaq2 - Perl的取得和学习(原文版 Revision: 1.16, Date: 1997/04/23 18:04:09. 18:15:48.中译版 $Revision: 1.13 $ $Date: 1997/07/12 20:41:48 $)


概述

本篇涵盖如何获得 Perl原始码、使用说明、支援,训练等问题及相关事宜。


哪些平台上有 Perl?要到哪里去找?

Perl的标准发行版(由 perl发展小组负责维护)仅以原始码形式发行。您可在 http://www.perl.com/CPAN/src/latest.tar.gz处取得。这个档案的格式是 POSIX tar档案柜,再以 gzip格式压缩。这套原始码完全不需任何移植工作便可轻易地在绝大多数的 Unix系统(Perl的原生系统),以及 Plan 9、VMS、QNX、 OS/2 ,和 Amiga上编译安装完成。尽管有谣传说(即将推出的)第 5.004版或许能直接在 Windows NT上成功地编译和安装,但这尚待证实。适合 32 位元的微软系统和苹果系统、以执行档形式发行的 Perl各可在 http://www.perl.com/CPAN/ports/这个目录底下找到。由於这两个不属於标准发行的一部分,它们可能(事实上的确)和基本的 Perl有多方面的不同。要确切知道到底哪些地方不同,您得自行查阅它们各自的发行说明。这些差异可能是正面的(譬如它们可能附有一些原始码发行的 perl所没有的延伸,提供专属某一平台的特殊功能),亦或负面的(例如它们可能是植基於比较老旧的 Perl原始码发行 版)。

一个实用、专为 Win32 Perl使用者编写的 FAQ可在 http://www.endcontsw.com/people/evangelo/Perl_for_Win32_FAQ.html处取得。


要如合取得以执行档形式发行的 Perl?

不管为什麽您的作业系统业者没有将 C编译器附在所卖的作业系统中,最好的方法是到网路上去抓一份 gcc的执行档,然後用它来编译 perl 。 CPAN 上所放的 gcc执行档仅专门提供几个特别难拿到免费编译器的平台,而不是给任何 Unix系 统的。

您的第一步应该是查看 http://www.perl.com/CPAN/ports这个档案,看看可以拿到哪些安装资料。 http://www.cs.ruu.nl/~piet/perl5dos.html 提供了一份有关在 DOS上安装 perl 的资料;而 http://www.cs.ruu.nl/~piet/perlwin3.html则是关於在 Windows 3.1上安装的资料。


我的系统里没有 C编译器。要如何编译 perl?

因为您没有 C 编译器,您是没指望了,而您的经销商则该拿去当作祭拜列位升阳 神的供品。不过说这些风凉话无济於事。

您首先需要做的是替您的系统找一个 gcc的执行档。参阅和您的作业系统相关的 各 Usenet FAQs,看到哪里可以找到这种作业系统的 gcc执行档 。


我直接将 Perl的执行档从一台机器上复制到另一台机器上,但是程式跑不起来。

那大概是您忘了复制程式库,或者是程式库的路径不同的关系。您真的应该在那台 要安装 perl的机器上将整套发行从头编译,然後打 make install来安装。其他的方法大多注定要失败。

有一个简单的方法可用来检查和确定东西有没有装对地方 --把编入 perl的 @INC阵列(perl用它来寻找程式库的路径)印出:

        perl -e 'print join("\n",@INC)'

如果这个指令列出了任何在您系统上不存在的路径,那麽您或许得将适当的程式库移到这些地方,或者制做适当的 symlinks、aliases 或捷径。

您或许会想看看 How do I keep my own module/library directory?


我抓回了原始码,试着编译 perl,但是 gdbm/dynamic loading/malloc/linking/...部分失败。要如何将它搞定?

细读 INSTALL这个档案,这是原始码发行版里面的一个档案。有时候自动设定程式 (Configure) 对某些较不寻常的系统、平台特质、或变异会不知所措。该档 案对该如何处这类的问题,大都有详细的说明。


Perl有哪些模组和延伸? CPAN是什麽? CPAN/src/...又代表什麽?

CPAN代表的是「大 Perl档案库网络」(Comprehensive Perl Archive Network),一个在全世界数十台机器之间相互映射的巨大档案库。CPAN包含了原始码、对各非原生系统的移植、使用说明、程式,以及许多由第叁类团体所写的模组和延伸,从各商业品牌的资料库介面、到键盘/萤幕控制,乃至全球资讯网漫游及 CGI程 式皆一应具全。CPAN的总主机是ftp://ftp.funet.fi/pub/languages/perl/CPAN/,但您也可以透过这个位址:http://www.perl.com/CPAN/CPAN.html来自动连接一个在地理位置上最接近您的站。至於这个设计的运作原理,请看 http://www.perl.com/CPAN(最後头没有斜线)的说明。

CPAN/路径/... 是 CPAN站台上头的档案的命名规范。CPAN 代表一个 CPAN映射的基准目录,然後其馀的路径是由该目录到一个档案的路径。例如,如果您使用 ftp://ftp.funet.fi/pub/languages/perl/CPAN来做您的 CPAN 站,那麽 CPAN/misc/japh这个档案便可以从 ftp://ftp.funet.fi/pub/languages/perl/CPAN/misc/japh 抓下来。

由於目前 CPAN档案库中已经有数百个模组,因此几乎任何您所能想到的用途,大概都已经有现成的模组可以办到。目前在 CPAN/modules/by-category/ 底下的类 别包括了 perl核心模组、协助发展模组、作业系统介面、网路、周边设备、不同 processes间之沟通、资料型态工具、资料库介面、使用者介面、与其他语言介面、档名、档案系统、档案锁定、软体国际化及地方化、全球资讯网支援、伺服软体工具、档案库和档案压缩、图形变换处理、电子邮件及新闻讨论群、程式流程控制工具、filehandles和输入/输出、微软视窗模组,以及杂项模组 等。


是不是有一个经 ISO【国际标准局】或 ANSI【美国国家标准局】认可的 Perl版本?

当然没有。Larry认为他得先被认可後然後才会轮到 Perl 。


Perl的相关资料要上哪儿找?

perl的发行版中都附有完整的使用说明中。如果 perl已安装在您的机器上,那 麽使用说明应该也已经装在上头了:如果您用的是一个像 Unix的系统,您可以打 man perl。这同时会带领您到其他重要的使用说明页。如果您用的不是 Unix 式的系统,那麽查阅使用说明的方法会有所不同;譬如说,使用说明可能会以HTML 格式来存放。不管怎麽样,只要 perl正确地安装,查阅使用说明应该不成问题。

如果您的系统没有 man这个指令,或者是该指令安装不当,那麽您可以试试 perldoc perl。如果还不成,您可以在 /usr/local/lib/perl5/pod这个目录 下找使用说明。

如果以上的方法全失败,那麽您可求助於 CPAN/doc这个目录,该目录底下存有完 整的使用说明,有各种不同的格式,包括了原始的 pod格式、troff、html,以及 纯文字式。还有 http://www.perl.com/perl/info/documentation.html 这个网页可能也会对您有帮助。

另外值得一提的是,在 CPAN/authors/id/BMIDD这个目录底下有一个完整的 PDF 版本的使用说明。

市面上有许多本和 Perl有关的好书,详情请见下面一节的介绍。


USENET上有哪些专门讨论 Perl的新闻讨论群?问题该投到哪里?

comp.lang.perl这个群组已不存在,它已被下列各群组所取代:

    comp.lang.perl.announce公告相关事宜(有管制)
    comp.lang.perl.misc一般问题讨论,很忙
    comp.lang.perl.modules模组的使用和发展
    comp.lang.perl.tk                   Perl Tk (及 X)的讨论

    comp.infosystems.www.authoring.cgi  WWW CGI程式写作相关问题研讨

news://genetics.upenn.edu/perl.porters-gw/ 还有一个 Perl发展小组 (Perl5-porters)用来连结邮递论坛的渠道。


如果我想投程式原始码,该投到哪个板子上?

您应看程式的性质来决定该丢到哪个板子上,但也欢迎您交叉投递一份到 comp.lang.perl.misc上头去。如果您打算交叉投递到 alt.sources 的话,请务必遵照该板所规定的标准,包括标头的 Followup-To栏不可将 alt.sources 列入; 详见该板的 FAQ 。


Perl书籍

市面上有许多有关 Perl 和/或 CGI程式设计的书。其中有些很好,有些还过得去,但也有不少根本不值得买。大部分的 Perl书都列在 Tom Christiansen所维护的 http://www.perl.com/perl/critiques/index.html 中,其中有的书有详尽 的评论。

毫无争议地,最权威的 Perl参考书要数以下这本,由 Perl的创始者及其信徒所 着,目前是第二版第四印:

    Programming Perl(俗称「the Camel book;骆驼册」):
作者: Larry Wall, Tom Christiansen, and Randal Schwartz
        ISBN 1-56592-149-6(英文版)
        ISBN 4-89052-384-7(日文版)
(法文、德文版准备中)

请注意,O'Reilly【上面这本和以下两本书的出版社】的书是按颜色分类的 --土耳其玉【蓝绿】色(有人也许会说它是鸭毛绿)的封皮代表内容涵盖 perl5 ,而紫红(有人也许会说它是粉红)色的封皮则代表内容仅限於 perl4 。所以先看看 外皮再买!

底下是几本是笔者个人觉得有帮助的书。您个人的感觉、偏好或许会不同(但我们 希望不会)。

如果您是个扎实的系统程式设计高手的话,那麽直接拿骆驼册来学 Perl大概就足 够了。但是如果您没有这麽厉害的话,那麽先看看「骆马册」。这本书目前并不涵盖 perl5,但第二版已接近完成,应可在 1997年夏天前问市。

    Learning Perl(俗称「the llama book;骆马册」)
作者: Randal Schwartz,由 Larry Wall作序
        ISBN 1-56592-042-2(英文)
        ISBN 4-89502-678-1(日文)
        ISBN 2-84177-005-2(法文)
        ISBN 3-930673-08-8(德文)

另一本出类拔粹的、同属 O'Reilly Perl系列的书是「帅猫头鹰」册。它从里到 外地对正规表示法 (regular expressions)加以剖析,其中有相当的份量是专门 针对 Perl写的:

    Mastering Regular Expressions(the Cute Owls Book;可爱的猫头鹰册):
作者: Jeffrey Friedl
        ISBN 1-56592-257-3

您可以向 O'Reilly & Associates订购以上这几本书,他们的电话是 1-800-998-9938(美加地区)和 1-707-829-0515(世界其他各地)。如果您有 O'Reilly的订购单,您可以传真 1-707-829-0104 。详情请到网路上的 http://www.ora.com/去看。

其他不由 O'Reilly 出版、笔者推荐的 Perl 丛书:

   Cross-Platform Perl,(针对 Unix及 Windows NT)
作者: Eric F. Johnson
       ISBN: 1-55851-483-X

   How to Set up and Maintain a World Wide Web Site, (2nd edition)
作者: Lincoln Stein, M.D., Ph.D.
        ISBN: 0-201-63462-7

   CGI Programming in C & Perl,
作者: Thomas Boutell
        ISBN: 0-201-42219-0

要提醒您的是以上这些书有的是针对某些应用领域(例如 WWW)而写,而非探讨一 般的程式写作。


和 Perl有关的杂志

Perl Journal 是第一、也是唯一的一本专门探讨 Perl 的期刊,每季发行一次(为一纸上期刊,非电子期刊)。发行人、总编辑是 Jon Orwant ( orwant@tpj.com )。订阅资料可在 http://tpj.com,或透过 email至 subscriptions@tpj.com取得。

除此之外,另外两本杂志也常登载高水准的 Perl 文章,它们是 Web Techniques(详见 http://www.webtechniques.com/ )和 Unix Review(http://www.unixreview.com/)。Randal Schwartz在 Web Techniques杂志的专栏可从 WWW 上的 http://www.stonehenge.com/merlyn/WebTechniques/ 处取得。


网路上的 Perl:透过 FTP和 WWW

如果您想达到最好(还有最省钱)的传输效果,那麽从下面所列的站台中任选其一, 从上头把完整的映射站名单抓下来。然後您可以从中挑选一个对您来说传输最快的 站台。请记住,底下 不是完整的 CPAN映射站名单。

  http://www.perl.com/CPAN(自动反弹到其他的映射站)
  http://www.perl.org/CPAN
  ftp://ftp.funet.fi/pub/languages/perl/CPAN/
  http://www.cs.ruu.nl/pub/PERL/CPAN/
  ftp://ftp.cs.colorado.edu/pub/perl/CPAN/

http:/www.oasis.leo.org/perl/除了其他的东西外,还收集了有从第一一直到第 五版的 Perl原始码。


有哪些讨论 Perl的邮递论坛(mailing lists)?

大部分的重要模组(如 tk、CGI 和 libwww-perl)有专属各自的 mailing lists。有关资料请参考这些模组的使用说明。以下的 mailing lists则是和 perl本 身有关的:

如果您订阅加入一个 mailing list,则您有义务知道该如何取消订阅。如果只是 苦苦地对着论坛哀求是不会被人接受的【因论坛的邮件位址和管理订阅的伺服软体 位址通常并不相同】。

MacPerl
这是讨论麦金塔 Perl的邮递论坛。详情请连络「 mac-perl-request@iis.ee.ethz.ch 」。

还有您可以由 Matthias Neeracher(MacPerl的创造及维护者)的网页 http://www.iis.ee.ethz.ch/~neeri/macintosh/perl.html 连到许多有趣的 MacPerl站台,以及事先编译好的应用程式/MPW发展工具。

Perl5-Porters
这是 perl的核心发展小组用来讨论语言本身除错和修改的邮递论坛。您可寄信到 perl5-porters-request@perl.org ,在信中正文的地方写上「help」,便可收到有关的订阅资料。

NTPerl
这是讨论 Win32 Perl5(Windows NT 和 Win95)的邮递论坛。如欲订阅,寄信到 ListManager@ActiveWare.com,在信中正文的地方写上:

    subscribe Perl-Win32-Users

这个用 perl写的邮递论坛管理软体会自动找出您的位址,然後将您加入名单中。 如果您要取消订阅,寄信到同一个地方,在正文处注明:

    unsubscribe Perl-Win32-Users

您也可以连到 http://www.activeware.com/ ,然後选择「Mailing Lists」,便可加入或离开这个邮递论坛了。

Perl-Packrats
这是用来讨论 perl资料的储存管理等相关事宜,特别是有关大 Perl档案库网路(CPAN)的邮递论坛。有意订阅者可 email majordomo@cis.ufl.edu ,文中注明:

    subscribe perl-packrats

这个也是用 perl写的邮递论坛管理软体会自动找出您的位址,然後将您加入名单 中。如果您要取消订阅,寄信到同一个地方,於正文处将相同的订阅指令前加上 「un」,像这样:

    unsubscribe perl-packrats


存有 comp.lang.perl.misc posts的档案库

试过 Deja News或 Alta Vista 了吗?

ftp.cis.ufl.edu:/pub/perl/comp.lang.perl.*/monthly有自 1989年 12月起(缺 1991年 8月份)至 1993年 12 月止的完整收藏。每个月的 posts 是以一个大档案的方式存放。

您可能会想要一个功能比较完备的讯问和抽取系统,而不只是能将档案名称列印出来;最好是一个使用索引作快速寻找的引擎,且至少可以按作者、日期、主题、 thread(一如 trn),或许还有关键字,来作搜索。作者所知道最好的方法是 MH 套件的 pick指令,但是如果拿它来搜索上万篇文章的话真的是很慢。

如果您曾经找到、或知道到哪儿可找到残缺的部分,请告知: perlfaq-suggestions@perl.com


Perl训练课程

虽然有些大型的训练公司提供各种 Perl的训练课程,但您可能会较顷向於找真正 密切投入 Perl发展的人来教您。Perl 发展小组中两位知名的成员 -- Tom Christiansen <perl-classes@perl.com> 和 Randal Schwartz <perl-training-info@stonehenge.com >,加上二人手下的众爪牙,联手 提供各项有关 Perl的专业入门讲座和研讨课程。这些课程包括了公开座谈,私人企业员工训练计画,以及直接飞到科罗拉多和奥勒冈上课等。详情请见 http://www.perl.com/perl/info/training.html


如何购买商业版本的 Perl?

在某种程度上来说,Perl 已经算是商业软体了:您可以把 Perl的发行约定拿来细读给您的经理听。各发行版都附有这份条例清楚、明确的公约。Perl有广大的使用者及广泛的文献。comp.lang.perl.*等新闻讨论群组和各电子邮递论坛更是对各种疑难杂症提供迅速的解答。Perl 传统上一直是由 Larry、许多软体设计工程师,以及成千上万的程式写作者提供支援,大夥协力让人人过更美好的日子。

尽管如此,有些主管坚持只向附售後保证的公司下订单,这样子出了问题才可以告 他们,故以上的回答可能无法令这类的经理满意。或许是这类的主管觉得亦步亦 趋的扶持支援及很强的合约义务有其必要。市面上有卖用玻璃纸密封包装的 Perl 光碟,您可以试试看,或许对您的经理有效。

不然您可以购买使用支援的契约。虽然 Cygnus在过去曾提供这项服务,他们现在已不再出售 Perl的支援合约了。取而代之、填补这个空档的是 the Paul Ingram Group 为此专设的 The Perl Clinic。以下是一则他们的广告:【未翻】

``Do you need professional support for Perl and/or Oraperl? Do you need a support contract with defined levels of service? Do you want to pay only for what you need?''

``The Paul Ingram Group has provided quality software development and support services to some of the world's largest corporations for ten years. We are now offering the same quality support services for Perl at The Perl Clinic. This service is led by Tim Bunce, an active perl porter since 1994 and well known as the author and maintainer of the DBI, DBD::Oracle, and Oraperl modules and author/co-maintainer of The Perl 5 Module List. We also offer Oracle users support for Perl5 Oraperl and related modules (which Oracle is planning to ship as part of Oracle Web Server 3). 20% of the profit from our Perl support work will be donated to The Perl Institute.''

如需进一步的资料,可连络 The Perl Clinic:

    Tel:    +44 1483 424424
    Fax:    +44 1483 419419
    Web:    http://www.perl.co.uk/
    Email:  perl-support-info@perl.co.uk or Tim.Bunce@ig.co.uk


如果发现 bugs要向何处报告?

如果您发现 perl解译器或标准发行中的模组有 bugs ,想报知 perl发展小组的 话,请使用 perl发行中所附的 perlbug程式,或将您的报告 email到 perlbug@perl.com

如果您想报告的 bug是有关某个非标准发行的 perl(详见「哪些平台上有 Perl ?」一题的答案)、某可执行档形式的发行,或是某非标准的模组(譬如 Tk、CGI 等),那麽请参考它所附的使用说明,以确定最合适报告 bugs的地方。

详情请见使用手册中 perlbug一篇(附於 perl5.004 或以後版本中)。


什麽是 perl.com、 perl.org,和 Perl Institute?

perl.org 是 Perl Institute 的正式传播媒介。TPI (The Perl Institute)的座右铭是「帮助他人帮 Perl助人」(或差不多这个意思)。这是一个非营利性的组织,主旨在支援 perl的发展、文献,和传播。目前 TPI 的领导人包括了 Larry Wall 、 Tom Christiansen,和 Randal Schwartz,这些名字或许您曾在这篇文章的其他地方见过。

perl.com 是 Tom Christiansen注册的网域。早在 perl.org成立之前他便创立了这个站台,做为公共服务之用。这是 Perl国度的公共电台,所有 Perl 东西的资讯交易所,该站的网页不接受登载任何商业广告、光鲜的 GIF 看板,或者是 (啊!) Java applets。


如何学着用 Perl来写物件导向程式?

perltoot(附在 5.004、或更新版之中)是一个很好的起点。此外, perlobjperlref ,及 perlmod 都是很有用的参考资料;而 perlbot则还提供了一些非常好的技巧和心得。


作者及版权事宜

Copyright (c) 1997 Tom Christiansen and Nathan Torkington.着作权所有, All rights reserved。有关使用、(转)发行事宜,详见 perlfaq

中译版着作权所有:萧百龄及两只老虎工作室。本中译版遵守并使用与原文版相同 的使用条款发行。