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