国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Perl > 正文

perl常問問題集--第一篇

2019-11-18 17:23:41
字體:
供稿:網(wǎng)友

目錄
篇名
概述
Perl是什麼?
誰對perl提供支援?由誰負責(zé)發(fā)展?它為什麼是免費的?
我該用哪一個版本的Perl?
perl4和perl5各代表什麼?
Perl的發(fā)展已穩(wěn)定了嗎?
Perl難學(xué)嗎?
Perl和其他的程式語言比起來如何?例如java,Python,REXX,Scheme,或Tcl?
我可以用Perl來做【某種差事】嗎?
哪些場合下不適合用Perl?
「perl」和「Perl」有什麼不同?
Perl程式應(yīng)算是PRogram還是script?
JAPH是什麼?
到哪兒可拿到LarryWall的智慧諷語(witticisms)?
我要如何取信、說服我的系統(tǒng)管理者/上司/屬下使用第5/5.004版的Perl,而不去用其他的語言?
作者及版權(quán)事宜

--------------------------------------------------------------------------------

篇名
perlfaq1-概括性的Perl問題(原文版Revision:1.12,Date:1997/04/2422:43:34.17:23:09.中譯版$Revision:1.12$$Date:1997/07/1220:41:48$)


--------------------------------------------------------------------------------

概述
本篇涵蓋非常概括性、高層次的Perl問題。


--------------------------------------------------------------------------------

Perl是什麼?
Perl是一個高階程式語言,由LarryWall和其他許多人所寫,融合了許多語言的特性。它主要是由無所不在的C語言,其次由sed、awk,UNIXshell和至少十數(shù)種其他的工具和語言所演化而來。Perl對process、檔案,和文字有很強的處理、變換能力,因此舉凡有關(guān)快速原型設(shè)計、系統(tǒng)工具、軟體工具、系統(tǒng)管理、資料庫連結(jié)、圖像程式設(shè)計、網(wǎng)路連結(jié),和WWW程式設(shè)計等之類的任務(wù),都特別適合用Perl來做。這些特長不但使Perl成為系統(tǒng)維護管理者和CGI作者的寵兒,就連數(shù)學(xué)家、遺傳學(xué)家、新聞從業(yè)者,甚至企業(yè)管理者也都用Perl,所以或許您也該用。


--------------------------------------------------------------------------------

誰對perl提供支援?由誰負責(zé)發(fā)展?它為什麼是免費的?
Perl自由開放的發(fā)行方式要歸功於發(fā)燒前的Internet的傳統(tǒng)文化及其作者LarryWall。Perl是由使用者提供支援。現(xiàn)在Perl的核心、標準程式庫、選擇性安裝的模組,以及您現(xiàn)在正在閱讀的使用說明都出自於義務(wù)者之手。詳情請見perl原始碼發(fā)行版中所附的README檔案底部的私人注記。

值得一提的是,核心發(fā)展小組(稱為PerlPorters)的成員是一群高度熱情奉獻的人仕,全心投入發(fā)展出比您所能想像、用錢能買得到還要更好的免費軟體。您可經(jīng)由news://genetics.upenn.edu/perl.porters-gw/和http://www.frii.com/~gnat/perl/porters/summary.html取得關(guān)於新近發(fā)展計畫的情報。

盡管GNU計畫將Perl囊括在它的發(fā)行中,但是沒有叫「GNUPerl」這樣的東西。Perl既非自由軟體基金會所創(chuàng),亦非由其負責(zé)維護。Perl的發(fā)行條款同時也較GNU軟體更來得開放。

如果您愿意,您可以購買商業(yè)性的Perl支援。但對大多數(shù)使用者來說,非正式性的支援通常已相當足夠。詳情請見「到哪里可買到商業(yè)性的Perl支援」一問的回答。


--------------------------------------------------------------------------------

我該用哪一個版本的Perl?
您絕對該用第五版。第四版不但老舊、功能較局限,而且已經(jīng)不再維護了。它最後一次的修正(4.036)是在1992年。Perl最新的量產(chǎn)發(fā)行版本是5.004。等到您讀這篇文章時,我們可能已經(jīng)又發(fā)行了幾個正式的除錯版本,同時大概又會有些替下一版路的實驗版出來。本文由此開始凡提及Perl語言,皆以目前的量產(chǎn)發(fā)行為準,除非另外特別注明。


--------------------------------------------------------------------------------

perl4和perl5各代表什麼?
perl4和perl5是對Perl程式語言的兩個不同版本的非正式稱呼,因為說「perl5」要比說「第5(.004)版的Perl」要來得簡單。但是有些人誤將其會意為:perl5是一個單獨的語言;這是不正確的。perl5只不過是對第五個主要發(fā)行版本(1994年10月)常用的稱呼罷了。就像perl4是指第四個主要發(fā)行(1991年3月),還有perl1(1988年1月)、perl2(1988年6月),以及perl3(1989年10月)。

5.0的發(fā)行基本上是從零開始,所有程式碼完全重新寫過的版本。它已經(jīng)被模組化、物件導(dǎo)向化、微調(diào)、精簡化,及效率化,以致程式碼幾乎已變得和原來的不相同了。盡管如此,使用介面大致上仍然相同,而且和先前的版本之間保持了很高的一致性。

為了避免「perl5是什麼語言?」這類的混淆,有些人索性完全避免「perl5」,而單用「perl」來指稱最近的perl版本。其實用不著這麼累就是了。


--------------------------------------------------------------------------------

Perl的發(fā)展已穩(wěn)定了嗎?
融合了除錯和新功能的量產(chǎn)發(fā)行在推出前皆經(jīng)過廣泛的測試。自5.000發(fā)行以來,我們平均一年才出版一次量產(chǎn)發(fā)行。

Larry和Perl發(fā)展小組有時候會修改語言的核心部分,但總是盡一切力量讓新版和舊版保持一致。因此,盡管不是所有的perl4scripts都能在perl5之下跑得天衣無縫,因升級而導(dǎo)致按照先前版本的perl所寫的程式無法使用的情形幾乎不曾發(fā)生(除非該程式倚賴已經(jīng)被去除的bugs,或使用了極少數(shù)新加入的指令來命名)。


--------------------------------------------------------------------------------

Perl難學(xué)嗎?
Perl不但容易上手,也容易繼續(xù)學(xué)下去。它看起來和大多數(shù)您可能已接觸過的語言一樣。所以如果您只寫過C程式、或awkscript、shellscript,或甚至只是Excel的macro(巨集),您已經(jīng)在半路了。

大多數(shù)的任務(wù)只需要Perl語言的一小部分即可完成。發(fā)展Perl程式的座右銘即是「不只一種方法可以達到」(TMTOWTDI;There'sMoreThanOneWayToDoIt,有時讀作「堤姆投迪」)。因此,Perl的學(xué)習(xí)曲線是既平(易學(xué))且長的(如果您要的話,有一大堆夠您學(xué)的)。

最後,Perl(通常)算是解譯式的語言。也就是說您寫了程式後不需經(jīng)由一道中間的編碼過程即可測試;這讓您可以很快、很容易地測試及除錯。這個方便試驗的特性又讓學(xué)習(xí)曲線變得更加平坦。

有助於修習(xí)Perl的一些事:UNIX經(jīng)驗、對幾乎是任何一種程式語言的經(jīng)驗、了解regularexpressions(正規(guī)表示法),以及看得懂旁人寫的程式的能力。如果您有什麼想用Perl來做的事,那麼可能已經(jīng)有前人做過了,而且實例通常可免費取得。還有別忘了新的Perl模組。模組在這份FAQ的第叁部分有詳細的討論,還有【別忘了您的好朋友】CPAN,這會在第二部分談到。


--------------------------------------------------------------------------------

Perl和其他的程式語言比起來如何?例如Java,Python,REXX,Scheme,或Tcl?
Perl在某些地方比較好,某些地方較差。精確地說到底哪些方面好或壞通常視個人偏好而定,所以在新聞討論群中問這種問題很可能會掀起一場毫無建設(shè)性的圣戰(zhàn)。

要比較各語言的異同最好的方法是試著用不同的語言寫功能相同的程式。各程式語言都各有屬於它們各自的新聞討論群,您可從中學(xué)習(xí)(但希望您不是去和人辨論吵架的)。


--------------------------------------------------------------------------------

我可以用Perl來做【某種差事】嗎?
Perl有足夠的彈性和擴充性,從只需要寫短短一行的檔案處理工作到復(fù)雜的系統(tǒng),幾乎沒有什麼做不到的。對有些人來說,Perl的是拿來做寫shell程式的理想替代品。其他人則用高階的Perl來替代處理許多原先需要用C或C 一類的低階語言來達到的程式。哪些差事決定要用Perl來處理,這一切都得看您(或許還有您的經(jīng)理...)。

如果您有一個提供API的程式庫的話,您可用C或C 來寫一個Perl延伸,然後便可透過它將程式庫中的任何一部分動態(tài)載入您的Perl主程式中。您也可以反過來,用C或C 來寫主程式,然後以即時動態(tài)載入的方式插入一些Perl程式碼,產(chǎn)生一個威力強大的應(yīng)用程式。

話雖如此,對解決某些特定的問題,使用小型、專精,專為特殊用途設(shè)計的語言總是比較方便的。Perl的設(shè)計是盡力地滿足各種不同人的需要,因而不特別偏頗任何人。至於特殊功能語言的例子,隨便舉兩個,譬如prolog和matlab便是。


--------------------------------------------------------------------------------

哪些場合下不適合用Perl?
當您的主管禁止的時候--不過請務(wù)必考慮把他們換掉:-)。

說真的,如果您已經(jīng)有用另一個語言寫成的應(yīng)用程式(而且寫得很好)的時候,或者是已經(jīng)有替某些特定的工作設(shè)計的語言(例如:prolog,make),這個時候就不需要用Perl。

由於種種因素,Perl大概不太適合拿來做即時內(nèi)嵌式系統(tǒng)、屬於低層級的作業(yè)系統(tǒng)發(fā)展工作,例如周邊設(shè)備的drivers或環(huán)境轉(zhuǎn)換碼、復(fù)雜的多線共用記憶體應(yīng)用程式,或非常大的應(yīng)用程式。您會發(fā)現(xiàn)Perl本身便不是以Perl寫成的。

剛出爐的Perl純碼編譯器或許可幫忙去除一些上述的限制,但您要了解:Perl在本質(zhì)上仍是一活性變數(shù)語言(dynamicallytypedlanguage),而非固性變數(shù)(staticallytyped)。只要您不將核電廠或腦科手術(shù)監(jiān)視器所用的程式放心地用Perl來寫,您自然就不會闖禍遭殃。這樣Larry晚上也可以睡得安穩(wěn)些--股市分析程式不在此限:-)。


--------------------------------------------------------------------------------

「perl」和「Perl」有什麼不同?
二者差一個位元。喔,您不是說在ASCII上的差別啊?:-)Larry現(xiàn)在用「Perl」來代表語言本身,而以「perl」來表示該語言的體現(xiàn),即目前的解譯器。因此,作者有句幽默小語說:「只有perl可以解譯Perl」。要不要遵照這個用法是您的自由。舉一反叁的話,我們可依樣畫葫蘆地說「awk和perl」還有「Python和Perl」,但卻不可將「awk和Perl」或是「Python和perl」擺在一起。


--------------------------------------------------------------------------------

Perl程式應(yīng)算是program還是script?
都無所謂。

按標準術(shù)語來講,program指已經(jīng)由編譯程序編譯好、轉(zhuǎn)為機器碼,可多次執(zhí)行的程式;而script則是每次執(zhí)行時都必須透過一個解譯程式來解譯。然而,Perl程式嚴格說來,既非編譯(compiled),亦非解譯式(interpreted);因Perl程式可轉(zhuǎn)譯成位元碼形式存在(可說是某種Perl虛擬機器[virtualmachine]),或轉(zhuǎn)譯為完全不同的語言,如C或組合語言。所以光看原始碼很難說它到底是替純解譯器、或是parse-tree解譯器、位元碼解譯器,還是純碼編譯器而寫;因此這題很難給它一個確切的答案。


--------------------------------------------------------------------------------

JAPH是什麼?
這是過去一些在討論群中自稱``justanotherperlhacker''的人的簽名檔,約有一百個比較早期的,可在http://www.perl.com/CPAN/misc/japh取得。


--------------------------------------------------------------------------------

到哪兒可拿到LarryWall的智慧諷語(witticisms)?
一百多條Larry的諷語,源自他【在討論群】的posts或原始碼,可在http://www.perl.com/CPAN/misc/lwall-quotes取得。


--------------------------------------------------------------------------------

我要如何取信、說服我的系統(tǒng)管理者/上司/屬下使用第5/5.004版的Perl,而不去用其他的語言?
如果您的管理階層或?qū)傧聦]有支援的軟體,或是未正式包含在所購買的作業(yè)系統(tǒng)中的軟體存有戒心的話,您可以試著從有助他們自身利益這方面下手。因為如果程式設(shè)計師能由善加利用Perl的結(jié)構(gòu)、功能性、簡單性,和威力而獲得更大的生產(chǎn)力的話,那麼典型的管理者/上司/員工或許便可因而加以說服。此外,使用Perl,總的來講,和其他語言相較,或許也有助於減少交件的時間。強調(diào)這個論點或許對說服他們會有幫助。

如果您的專題碰到瓶頸,特別是有關(guān)轉(zhuǎn)譯或測試方面的問題,那麼Perl可以說絕對會是一個既可行且快的解決之道。您在當說客的時候,千萬別忘了要提:Perl已被世界上許多大型的軟硬體公司廣泛、大量地使用,極為可靠、有效。事實上,現(xiàn)Perl已成為許多Unix業(yè)者所售的作業(yè)系統(tǒng)的標準配備了。而且如果您無法在詳盡的使用說明,包括這份FAQ之中為您的問題找到解答的話,送封post到新聞討論群即可。

如果您面對反對perl升級的聲音,那麼告訴他們Perl發(fā)展小組已經(jīng)完全不再維護或支援第四版的perl了。perl5的另一個大賣點是它有大量的模組和延伸,可大大減少計畫的發(fā)展時間。還有,告訴他們第四和第五版Perl之間的差異就如awk和C 的差別一樣(嗯,或許沒有差得那麼明顯,但您知道我的意思就好)。如果您想得到支援而且想確保您現(xiàn)在所發(fā)展的軟體在未來能繼續(xù)工作的話,那麼您得跑有支援的版本。這大概也就是說要跑5.004版的,盡管5.003版仍算是不錯(它只落後一年、一版)。不過因為有些嚴重的bugs曾在5.000和5.002版之間被消除,所以您至少應(yīng)升級到比這幾個版本高才是。


--------------------------------------------------------------------------------

作者及版權(quán)事宜
Copyright(c)1997TomChristiansenandNathanTorkington.著作權(quán)所有,Allrightsreserved。有關(guān)使用、(轉(zhuǎn))發(fā)行事宜,詳見perlfaq。

中譯版著作權(quán)所有:蕭百齡及兩只老虎工作室。本中譯版遵守并使用與原文版相同的使用條款發(fā)行。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 通榆县| 三门峡市| 闻喜县| 通州市| 普格县| 濮阳县| 石屏县| 六盘水市| 德江县| 奎屯市| 闽清县| 崇义县| 通化市| 寻甸| 五台县| 晋宁县| 金秀| 华阴市| 大邑县| 虎林市| 临夏县| 小金县| 新沂市| 开平市| 凉城县| 洪泽县| 建平县| 常熟市| 四平市| 交城县| 阜阳市| 利津县| 清丰县| 霍林郭勒市| 昌宁县| 昌邑市| 获嘉县| 恩施市| 海口市| 鄢陵县| 兴山县|