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

中譯版著作權所有:蕭百齡及兩隻老虎工作室。本中譯版遵守並使用與原文版相同 的使用條款發行。