專家答疑 Perl常見問題匯總
本文和大家重點(diǎn)討論一下Perl常見問題,Perl的標(biāo)準(zhǔn)發(fā)行版(由Perl發(fā)展小組負(fù)責(zé)維護(hù))僅以原始碼形式發(fā)行,相信通過這些常見問題的解答你對Perl編程語言一定會有新的認(rèn)識。
Perl常見問題集合
◆Perl常見問題:哪些平臺上有Perl?要到哪里去找?
Perl的標(biāo)準(zhǔn)發(fā)行版(由Perl發(fā)展小組負(fù)責(zé)維護(hù))僅以原始碼形式發(fā)行。您可在http://www.Perl.com/CPAN/src/latest.tar.gz處取得。這個檔案的格式是POSIXtar檔案柜,再以gzip格式壓縮。這套原始碼完全不需任何移植工作便可輕易地在絕大多數(shù)的Unix系統(tǒng)(Perl的原生系統(tǒng)),以及Plan9、VMS、QNX、OS/2,和Amiga上編譯安裝完成。盡管有謠傳說(即將推出的)第5.004版或許能直接在WindowsNT上成功地編譯和安裝,但這尚待證實(shí)。適合32位元的微軟系統(tǒng)和蘋果系統(tǒng)、以執(zhí)行檔形式發(fā)行的Perl各可在http://www.Perl.com/CPAN/ports/這個目錄底下找到。由於這兩個不屬於標(biāo)準(zhǔn)發(fā)行的一部分,它們可能(事實(shí)上的確)和基本的Perl有多方面的不同。要確切知道到底哪些地方不同,您得自行查閱它們 各自的發(fā)行說明。這些差異可能是正面的(譬如它們可能附有一些原始碼發(fā)行的Perl所沒有的延伸,提供專屬某一平臺的特殊功能),亦或負(fù)面的(例如它們可能是植基於比較老舊的Perl原始碼發(fā)行版)。
一個實(shí)用、專為Win32Perl使用者編寫的FAQ可在 http://www.endcontsw.com/people/evangelo/Perl_for_Win32_FAQ.html處取得。
◆Perl常見問題:要如合取得以執(zhí)行檔形式發(fā)行的Perl?
不管為什麼您的作業(yè)系統(tǒng)業(yè)者沒有將C編譯器附在所賣的作業(yè)系統(tǒng)中,最好的方法是到網(wǎng)路上去抓一份gcc的執(zhí)行檔,然後用它來編譯Perl。CPAN上所放的gcc執(zhí)行檔僅專門提供幾個特別難拿到免費(fèi)編譯器的平臺,而不是給任何Unix系統(tǒng)的。
您的第一步應(yīng)該是查看http://www.Perl.com/CPAN/ports這個檔案,看看可以拿到哪些安裝資料。http://www.cs.ruu.nl/~piet/Perl5dos.html提供了一份有關(guān)在DOS上安裝Perl的資料;而http://www.cs.ruu.nl/~piet/Perlwin3.html則是關(guān)於在Windows3.1上安裝的資料。
◆Perl常見問題:我的系統(tǒng)里沒有C編譯器。要如何編譯Perl?
因?yàn)槟鷽]有C編譯器,您是沒指望了,而您的經(jīng)銷商則該拿去當(dāng)作祭拜列位升陽神的供品。不過說這些風(fēng)涼話無濟(jì)於事。
您首先需要做的是替您的系統(tǒng)找一個gcc的執(zhí)行檔。參閱和您的作業(yè)系統(tǒng)相關(guān)的各UsenetFAQs,看到哪里可以找到這種作業(yè)系統(tǒng)的gcc執(zhí)行檔。
我直接將Perl的執(zhí)行檔從一臺機(jī)器上復(fù)制到另一臺機(jī)器上,但是程式跑不起來。那大概是您忘了復(fù)制程式庫,或者是程式庫的路徑不同的關(guān)系。您真的應(yīng)該在那臺要安裝Perl的機(jī)器上將整套發(fā)行從頭編譯,然後打makeinstall來安裝。其他的方法大多注定要失敗。
有一個簡單的方法可用來檢查和確定東西有沒有裝對地方--把編入Perl的@INC陣列(Perl用它來尋找程式庫的路徑)印出:Perl-e'printjoin("\n",@INC)'
如果這個指令列出了任何在您系統(tǒng)上不存在的路徑,那麼您或許得將適當(dāng)?shù)某淌綆煲频竭@些地方,或者制做適當(dāng)?shù)膕ymlinks、aliases或捷徑。
您或許會想看看HowdoIkeepmyownmodule/librarydirectory?。
我抓回了原始碼,試著編譯Perl,但是gdbm/dynamicloading/malloc/linking/...部分失敗。要如何將它搞定?
細(xì)讀INSTALL這個檔案,這是原始碼發(fā)行版里面的一個檔案。有時候自動設(shè)定程式(Configure)對某些較不尋常的系統(tǒng)、平臺特質(zhì)、或變異會不知所措。該檔案對該如何處這類的問題,大都有詳細(xì)的說明。#p#
◆Perl常見問題:Perl有哪些模組和延伸?CPAN是什麼?CPAN/src/...又代表什麼?
CPAN代表的是「大Perl檔案庫網(wǎng)絡(luò)」(ComprehensivePerlArchiveNetwork),一個在全世界數(shù)十臺機(jī)器之間相互映射的巨大檔案庫。CPAN包含了原始碼、對各非原生系統(tǒng)的移植、使用說明、程式,以及許多由第叁類團(tuán)體所寫的模組和延伸,從各商業(yè)品牌的資料庫介面、到鍵盤/螢?zāi)豢刂疲酥寥蛸Y訊網(wǎng)漫游及CGI程式皆一應(yīng)具全。CPAN的總主機(jī)是ftp://ftp.funet.fi/pub/languages/Perl/CPAN/,但您也可以透過這個位址:http://www.Perl.com/CPAN/CPAN.html來自動連接一個在地理位置上最接近您的站。至於這個設(shè)計的運(yùn)作原理,請看http://www.Perl.com/CPAN(最後頭沒有斜線)的說明。
CPAN/路徑/...是CPAN站臺上頭的檔案的命名規(guī)范。CPAN代表一個CPAN映射的基準(zhǔn)目錄,然後其馀的路徑是由該目錄到一個檔案的路徑。例如,如果您使用ftp://ftp.funet.fi/pub/languages/Perl/CPAN來做您的CPAN站,那麼CPAN/misc/japh這個檔案便可以從ftp://ftp.funet.fi/pub/languages/Perl/CPAN/misc/japh抓下來。
由於目前CPAN檔案庫中已經(jīng)有數(shù)百個模組,因此幾乎任何您所能想到的用途,大概都已經(jīng)有現(xiàn)成的模組可以辦到。目前在CPAN/modules/by-category/底下的類別包括了Perl核心模組、協(xié)助發(fā)展模組、作業(yè)系統(tǒng)介面、網(wǎng)路、周邊設(shè)備、不同processes間之溝通、資料型態(tài)工具、資料庫介面、使用者介面、與其他語言介面、檔名、檔案系統(tǒng)、檔案鎖定、軟體國際化及地方化、全球資訊網(wǎng)支援、伺服軟體工具、檔案庫和檔案壓縮、圖形變換處理、電子郵件及新聞討論群、程式流程控制工具、filehandles和輸入/輸出、微軟視窗模組,以及雜項模組等。
◆Perl常見問題:是不是有一個經(jīng)ISO【國際標(biāo)準(zhǔn)局】或ANSI【美國國家標(biāo)準(zhǔn)局】認(rèn)可的Perl版本?
當(dāng)然沒有。Larry認(rèn)為他得先被認(rèn)可後然後才會輪到Perl。
◆Perl常見問題:MacPerl
這是討論麥金塔Perl的郵遞論壇。詳情請連絡(luò)「mac-Perl-request@iis.ee.ethz.ch」。還有您可以由MatthiasNeeracher(MacPerl的創(chuàng)造及維護(hù)者)的網(wǎng)頁http://www.iis.ee.ethz.ch/~neeri/macintosh/Perl.html連到許多有趣的MacPerl站臺,以及事先編譯好的應(yīng)用程式/MPW發(fā)展工具。
◆Perl常見問題:Perl5-Porters
這是Perl的核心發(fā)展小組用來討論語言本身除錯和修改的郵遞論壇。您可寄信到Perl5-porters-request@Perl.org,在信中正文的地方寫上「help」,便可收到有關(guān)的訂閱資料。
◆Perl常見問題:NTPerl
這是討論Win32Perl5(WindowsNT和Win95)的郵遞論壇。如欲訂閱,寄信到ListManager@ActiveWare.com,在信中正文的地方寫上:
subscribePerl-Win32-Users
這個用Perl寫的郵遞論壇管理軟體會自動找出您的位址,然後將您加入名單中。如果您要取消訂閱,寄信到同一個地方,在正文處注明:unsubscribePerl-Win32-Users
您也可以連到http://www.activeware.com/,然後選擇「MailingLists」,便可加入或離開這個郵遞論壇了。
◆Perl常見問題:Perl-Packrats
這是用來討論P(yáng)erl資料的儲存管理等相關(guān)事宜,特別是有關(guān)大Perl檔案庫網(wǎng)路(CPAN)的郵遞論壇。有意訂閱者可emailmajordomo@cis.ufl.edu,文中注明: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是以一個大檔案的方式存放。
您可能會想要一個功能比較完備的訊問和抽取系統(tǒng),而不只是能將檔案名稱列印出來;最好是一個使用索引作快速尋找的引擎,且至少可以按作者、日期、主題、thread(一如trn),或許還有關(guān)鍵字,來作搜索。作者所知道最好的方法是MH套件的pick指令,但是如果拿它來搜索上萬篇文章的話真的是很慢。
如果您曾經(jīng)找到、或知道到哪兒可找到殘缺的部分,請告知:Perlfaq-suggestions@Perl.com。
◆Perl常見問題:Perl訓(xùn)練課程
雖然有些大型的訓(xùn)練公司提供各種Perl的訓(xùn)練課程,但您可能會較頃向於找真正密切投入Perl發(fā)展的人來教您。Perl發(fā)展小組中兩位知名的成員--TomChristiansen和RandalSchwartz,加上二人手下的眾爪牙,聯(lián)手提供各項有關(guān)Perl的專業(yè)入門講座和研討課程。這些課程包括了公開座談,私人企業(yè)員工訓(xùn)練計畫,以及直接飛到科羅拉多和奧勒岡上課等。詳情請見http://www.Perl.com/Perl/info/training.html。
◆Perl常見問題:如果發(fā)現(xiàn)bugs要向何處報告?
如果您發(fā)現(xiàn)Perl解譯器或標(biāo)準(zhǔn)發(fā)行中的模組有bugs,想報知Perl發(fā)展小組的話,請使用Perl發(fā)行中所附的Perlbug程式,或?qū)⒛膱蟾鎒mail到Perlbug@Perl.com。
如果您想報告的bug是有關(guān)某個非標(biāo)準(zhǔn)發(fā)行的Perl(詳見「哪些平臺上有Perl?」一題的答案)、某可執(zhí)行檔形式的發(fā)行,或是某非標(biāo)準(zhǔn)的模組(譬如Tk、CGI等),那麼請參考它所附的使用說明,以確定最合適報告bugs的地方。
詳情請見使用手冊中Perlbug一篇(附於Perl5.004或以後版本中)。
◆Perl常見問題:什麼是Perl.com、Perl.org,和PerlInstitute?
Perl.org是PerlInstitute的正式傳播媒介。TPI(ThePerlInstitute)的座右銘是「幫助他人幫Perl助人」(或差不多這個意思)。這是一個非營利性的組織,主旨在支援Perl的發(fā)展、文獻(xiàn),和傳播。目前TPI的領(lǐng)導(dǎo)人包括了LarryWall、TomChristiansen,和RandalSchwartz,這些名字或許您曾在這篇文章的其他地方見過。
Perl.com是TomChristiansen注冊的網(wǎng)域。早在Perl.org成立之前他便創(chuàng)立了這個站臺,做為公共服務(wù)之用。這是Perl國度的公共電臺,所有Perl東西的資訊交易所,該站的網(wǎng)頁不接受登載任何商業(yè)廣告、光鮮的GIF看板,或者是(啊!)Javaapplets。
◆Perl常見問題:如何學(xué)著用Perl來寫物件導(dǎo)向程式?
Perltoot(附在5.004、或更新版之中)是一個很好的起點(diǎn)。此外,Perlobj、Perlref,及Perlmod都是很有用的參考資料;而Perlbot則還提供了一些非常好的技巧和心得。
【編輯推薦】