值得一提的是,核心發展小組(稱為 Perl Porters)的成員是一群高度熱情奉獻的人仕,全心投入發展出比您所能想像、用錢能買得到還要更好的免費軟體。您可經由 news://genetics.upenn.edu/perl.porters-gw/ 和 http://www.frii.com/~gnat/perl/porters/summary.html取得關於新近發展計畫 的情報。
儘管 GNU計畫將 Perl囊括在它的發行中,但是沒有叫「GNU Perl」這樣的東西。 Perl既非自由軟體基金會所創,亦非由其負責維護。Perl的發行條款同時也較 GNU軟體更來得開放。
如果您願意,您可以購買商業性的 Perl支援。但對大多數使用者來說,非正式性的支援通常已相當足夠。詳情請見「到哪裡可買到商業性的 Perl支援」一問的回 答。
5(.004)
版的 Perl」要來得簡單。但是有些人誤將其會意為:perl5是一個單獨的語言;這是不正確的。perl5只不過是對第五個主要發行版本(1994年 10
月)常用的稱呼罷了。就像 perl4是指第四個主要發行(1991年 3
月),還有 perl1(1988年 1月)、perl2(1988年 6
月),以及 perl3(1989年 10
月)。
5.0的發行基本上是從零開始,所有程式碼完全重新寫過的版本。它已經被模組化、物件導向化、微調、精簡化,及效率化,以致程式碼幾乎已變得和原來的不相同了。儘管如此,使用介面大致上仍然相同,而且和先前的版本之間保持了很高的 一致性。
為了避免「perl5是什麼語言?」這類的混淆,有些人索性完全避免「perl5」, 而單用「perl」來指稱最近的 perl版本。其實用不著這麼累就是了。
Larry 和 Perl發展小組有時候會修改語言的核心部分,但總是盡一切力量讓新版 和舊版保持一致。因此,儘管不是所有的 perl4 scripts都能在 perl5 之下跑得天衣無縫,因升級而導致按照先前版本的 perl所寫的程式無法使用的情形幾乎不曾發生(除非該程式倚賴已經被去除的 bugs,或使用了極少數新加入的指令來 命名)。
大多數的任務只需要 Perl語言的一小部分即可完成。發展 Perl程式的座右銘即 是「不只一種方法可以達到」(TMTOWTDI; There's More Than One Way To Do It, 有時讀作「隄姆投迪」)。因此,Perl的學習曲線是既平(易學)且長的 (如果您要的話,有一大堆夠您學的)。
最後,Perl(通常)算是解譯式的語言。也就是說您寫了程式後不需經由一道中 間的編碼過程即可測試;這讓您可以很快、很容易地測試及除錯。這個方便試驗的 特性又讓學習曲線變得更加平坦。
有助於修習 Perl 的一些事:UNIX經驗、對幾乎是任何一種程式語言的經驗、了解 regular expressions(正規表示法),以及看得懂旁人寫的程式的能力。如果您有什麼想用 Perl來做的事,那麼可能已經有前人做過了,而且實例通常可免費取得。還有別忘了新的 Perl模組。模組在這份 FAQ 的第三部分有詳細的討論,還有【別忘了您的好朋友】 CPAN,這會在第二部分談到。
要比較各語言的異同最好的方法是試著用不同的語言寫功能相同的程式。各程式語言都各有屬於它們各自的新聞討論群,您可從中學習(但希望您不是去和人辨論吵 架的)。
如果您有一個提供 API的程式庫的話,您可用 C或 C++來寫一個 Perl 延伸,然後便可透過它將程式庫中的任何一部分動態載入您的 Perl主程式中。您也可以 反過來,用 C或 C++來寫主程式,然後以即時動態載入的方式插入一些Perl程式碼,產生一個威力強大的應用程式。
話雖如此,對解決某些特定的問題,使用小型、專精,專為特殊用途設計的語言總 是比較方便的。 Perl的設計是盡力地滿足各種不同人的需要,因而不特別偏頗任何人。至於特殊功能語言的例子,隨便舉兩個,譬如 prolog 和 matlab 便是。
說真的,如果您已經有用另一個語言寫成的應用程式(而且寫得很好)的時候,或 者是已經有替某些特定的工作設計的語言(例如:prolog, make),這個時候就不 需要用 Perl。
由於種種因素,Perl大概不太適合拿來做即時內嵌式系統、屬於低層級的作業系統發展工作,例如周邊設備的 drivers或環境轉換碼、複雜的多線共用記憶體應用程式,或非常大的應用程式。您會發現 Perl 本身便不是以 Perl寫成的。
剛出爐的 Perl純碼編譯器或許可幫忙去除一些上述的限制,但您要了解:Perl在本質上仍是一活性變數語言 (dynamically typed language),而非固性變數 (statically typed)。只要您不將核電廠或腦科手術監視器所用的程式放心地用 Perl來寫,您自然就不會闖禍遭殃。這樣 Larry晚上也可以睡得安穩些 --股市分析程式不在此限 :-)。
按標準術語來講,program指已經由編譯程序編譯好、轉為機器碼,可多次執 行的程式;而 script則是每次執行時都必須透過一個解譯程式來解譯。然而,Perl程式嚴格說來,既非編譯 (compiled) ,亦非解譯式 (interpreted);因 Perl程式可轉譯成位元碼形式存在(可說是某種 Perl虛擬機器 [virtual machine]),或轉譯為完全不同的語言,如 C或組合語言。所以光看原始碼很難 說它到底是替純解譯器、或是 parse-tree解譯器、位元碼解譯器,還是純碼編譯器而寫;因此這題很難給它一個確切的答案。
如果您的專題碰到瓶頸,特別是有關轉譯或測試方面的問題,那麼 Perl可以說絕 對會是一個既可行且快的解決之道。您在當說客的時候,千萬別忘了要提:Perl已 被世界上許多大型的軟硬體公司廣泛、大量地使用,極為可靠、有效。事實上,現 Perl已成為許多 Unix業者所售的作業系統的標準配備了。而且如果您無法在 詳盡的使用說明,包括這份 FAQ之中為您的問題找到解答的話,送封 post 到新聞討論群即可。
如果您面對反對 perl升級的聲音,那麼告訴他們 Perl發展小組已經完全不再維護或支援第四版的 perl了。perl5的另一個大賣點是它有大量的模組和延伸,可大大減少計畫的發展時間。還有,告訴他們第四和第五版 Perl之間的差異就如 awk 和 C++的差別一樣(嗯,或許沒有差得那麼明顯,但您知道我的意思就好)。如果您想得到支援而且想確保您現在所發展的軟體在未來能繼續工作的話,那麼您得跑有支援的版本。這大概也就是說要跑 5.004 版的,儘管 5.003 版仍算是不錯(它只落後一年、一版)。不過因為有些嚴重的 bugs曾在 5.000 和 5.002版之間被消除,所以您至少應升級到比這幾個版本高才是。
中譯版著作權所有:蕭百齡及兩隻老虎工作室。本中譯版遵守並使用與原文版相同 的使用條款發行。