专家答疑 Perl常见问题汇总
本文和大家重点讨论一下Perl常见问题,Perl的标准发行版(由Perl发展小组负责维护)仅以原始码形式发行,相信通过这些常见问题的解答你对Perl编程语言一定会有新的认识。
Perl常见问题集合
◆Perl常见问题:哪些平台上有Perl?要到哪里去找?
Perl的标准发行版(由Perl发展小组负责维护)仅以原始码形式发行。您可在http://www.Perl.com/CPAN/src/latest.tar.gz处取得。这个档案的格式是POSIXtar档案柜,再以gzip格式压缩。这套原始码完全不需任何移植工作便可轻易地在绝大多数的Unix系统(Perl的原生系统),以及Plan9、VMS、QNX、OS/2,和Amiga上编译安装完成。尽管有谣传说(即将推出的)第5.004版或许能直接在WindowsNT上成功地编译和安装,但这尚待证实。适合32位元的微软系统和苹果系统、以执行档形式发行的Perl各可在http://www.Perl.com/CPAN/ports/这个目录底下找到。由於这两个不属於标准发行的一部分,它们可能(事实上的确)和基本的Perl有多方面的不同。要确切知道到底哪些地方不同,您得自行查阅它们 各自的发行说明。这些差异可能是正面的(譬如它们可能附有一些原始码发行的Perl所没有的延伸,提供专属某一平台的特殊功能),亦或负面的(例如它们可能是植基於比较老旧的Perl原始码发行版)。
一个实用、专为Win32Perl使用者编写的FAQ可在 http://www.endcontsw.com/people/evangelo/Perl_for_Win32_FAQ.html处取得。
◆Perl常见问题:要如合取得以执行档形式发行的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则是关於在Windows3.1上安装的资料。
◆Perl常见问题:我的系统里没有C编译器。要如何编译Perl?
因为您没有C编译器,您是没指望了,而您的经销商则该拿去当作祭拜列位升阳神的供品。不过说这些风凉话无济於事。
您首先需要做的是替您的系统找一个gcc的执行档。参阅和您的作业系统相关的各UsenetFAQs,看到哪里可以找到这种作业系统的gcc执行档。
我直接将Perl的执行档从一台机器上复制到另一台机器上,但是程式跑不起来。那大概是您忘了复制程式库,或者是程式库的路径不同的关系。您真的应该在那台要安装Perl的机器上将整套发行从头编译,然後打makeinstall来安装。其他的方法大多注定要失败。
有一个简单的方法可用来检查和确定东西有没有装对地方--把编入Perl的@INC阵列(Perl用它来寻找程式库的路径)印出:Perl-e'printjoin("\n",@INC)'
如果这个指令列出了任何在您系统上不存在的路径,那麽您或许得将适当的程式库移到这些地方,或者制做适当的symlinks、aliases或捷径。
您或许会想看看HowdoIkeepmyownmodule/librarydirectory?。
我抓回了原始码,试着编译Perl,但是gdbm/dynamicloading/malloc/linking/...部分失败。要如何将它搞定?
细读INSTALL这个档案,这是原始码发行版里面的一个档案。有时候自动设定程式(Configure)对某些较不寻常的系统、平台特质、或变异会不知所措。该档案对该如何处这类的问题,大都有详细的说明。
◆Perl常见问题:Perl有哪些模组和延伸?CPAN是什麽?CPAN/src/...又代表什麽?
CPAN代表的是「大Perl档案库网络」(ComprehensivePerlArchiveNetwork),一个在全世界数十台机器之间相互映射的巨大档案库。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和输入/输出、微软视窗模组,以及杂项模组等。
◆Perl常见问题:是不是有一个经ISO【国际标准局】或ANSI【美国国家标准局】认可的Perl版本?
当然没有。Larry认为他得先被认可後然後才会轮到Perl。
◆Perl常见问题:MacPerl
这是讨论麦金塔Perl的邮递论坛。详情请连络「[email protected]」。还有您可以由MatthiasNeeracher(MacPerl的创造及维护者)的网页http://www.iis.ee.ethz.ch/~neeri/macintosh/Perl.html连到许多有趣的MacPerl站台,以及事先编译好的应用程式/MPW发展工具。
◆Perl常见问题:Perl5-Porters
这是Perl的核心发展小组用来讨论语言本身除错和修改的邮递论坛。您可寄信到[email protected],在信中正文的地方写上「help」,便可收到有关的订阅资料。
◆Perl常见问题:NTPerl
这是讨论Win32Perl5(WindowsNT和Win95)的邮递论坛。如欲订阅,寄信到[email protected],在信中正文的地方写上:
subscribePerl-Win32-Users
这个用Perl写的邮递论坛管理软体会自动找出您的位址,然後将您加入名单中。如果您要取消订阅,寄信到同一个地方,在正文处注明:unsubscribePerl-Win32-Users
您也可以连到http://www.activeware.com/,然後选择「MailingLists」,便可加入或离开这个邮递论坛了。
◆Perl常见问题:Perl-Packrats
这是用来讨论Perl资料的储存管理等相关事宜,特别是有关大Perl档案库网路(CPAN)的邮递论坛。有意订阅者可[email protected],文中注明:subscribePerl-packrats
这个也是用Perl写的邮递论坛管理软体会自动找出您的位址,然後将您加入名单中。如果您要取消订阅,寄信到同一个地方,於正文处将相同的订阅指令前加上「un」,像这样:unsubscribePerl-packrats
存有comp.lang.Perl.miscposts的档案库
◆Perl常见问题:试过DejaNews或AltaVista了吗?
ftp.cis.ufl.edu:/pub/Perl/comp.lang.Perl.*/monthly有自1989年12月起(缺1991年8月份)至1993年12月止的完整收藏。每个月的posts是以一个大档案的方式存放。
您可能会想要一个功能比较完备的讯问和抽取系统,而不只是能将档案名称列印出来;最好是一个使用索引作快速寻找的引擎,且至少可以按作者、日期、主题、thread(一如trn),或许还有关键字,来作搜索。作者所知道最好的方法是MH套件的pick指令,但是如果拿它来搜索上万篇文章的话真的是很慢。
如果您曾经找到、或知道到哪儿可找到残缺的部分,请告知:[email protected]。
◆Perl常见问题:Perl训练课程
虽然有些大型的训练公司提供各种Perl的训练课程,但您可能会较顷向於找真正密切投入Perl发展的人来教您。Perl发展小组中两位知名的成员--TomChristiansen和RandalSchwartz,加上二人手下的众爪牙,联手提供各项有关Perl的专业入门讲座和研讨课程。这些课程包括了公开座谈,私人企业员工训练计画,以及直接飞到科罗拉多和奥勒冈上课等。详情请见http://www.Perl.com/Perl/info/training.html。
◆Perl常见问题:如果发现bugs要向何处报告?
如果您发现Perl解译器或标准发行中的模组有bugs,想报知Perl发展小组的话,请使用Perl发行中所附的Perlbug程式,或将您的报告email到[email protected]。
如果您想报告的bug是有关某个非标准发行的Perl(详见「哪些平台上有Perl?」一题的答案)、某可执行档形式的发行,或是某非标准的模组(譬如Tk、CGI等),那麽请参考它所附的使用说明,以确定最合适报告bugs的地方。
详情请见使用手册中Perlbug一篇(附於Perl5.004或以後版本中)。
◆Perl常见问题:什麽是Perl.com、Perl.org,和PerlInstitute?
Perl.org是PerlInstitute的正式传播媒介。TPI(ThePerlInstitute)的座右铭是「帮助他人帮Perl助人」(或差不多这个意思)。这是一个非营利性的组织,主旨在支援Perl的发展、文献,和传播。目前TPI的领导人包括了LarryWall、TomChristiansen,和RandalSchwartz,这些名字或许您曾在这篇文章的其他地方见过。
Perl.com是TomChristiansen注册的网域。早在Perl.org成立之前他便创立了这个站台,做为公共服务之用。这是Perl国度的公共电台,所有Perl东西的资讯交易所,该站的网页不接受登载任何商业广告、光鲜的GIF看板,或者是(啊!)Javaapplets。