81

更新時間: 2013-12-07

廣告

Perl是一種高級、通用、直譯式、動態的程序語言。最初設計者拉里·沃爾(Larry Wall)為了讓用戶在UNIX上進行報表處理的工作變得更方便,決定開發一個通用的腳本語言,Perl在1987年12月18日發表。\nPerl借取了C、sed、awk、shell scripting及很多其他編程語言的特性。其中最重要的特性是他內部集成了正則表達式的功能,以及巨大的第三方代碼庫CPAN。目前拉里·沃爾已經開發Perl 6,來作為Perl的後繼。

perl -Perl 簡介

Perl 最初只是 Unix 系統管理員的一個工具,在工作日里被用在無數的小任務中。從那以後,它逐步發展成為一種全功能的程序設計語言,特別是在各種計算平台上,它被用作 Web 編程、資料庫處理、XML 處理以及系統管理 —— 它能夠完成所有這些工作,同時仍然是處理小的日常工作的完美工具,這是它的設計初衷。Perl 快速、有趣,而且特別有用。很多人因為需要 Perl  而使用它,又因為熱愛它而繼續使用它。

Perl是一門自由且功能強大的編程語言。自1987 年初次登台亮相以來,它的用戶數一直急劇膨脹。從最初被當作一種在跨平台環境中書寫可移植工具的高級語言開始,Perl 就已經被廣泛地認為是一種工業級的強大工具,可以在任何地方用來完成你的工作。 Perl 特別適合系統管理和 Web 編程。Perl 實際上已經被所有 Unix(包括 Linux )捆綁在一起作為標準部件發布,而且也被廣泛用於 Microsoft Windows 和幾乎所有其他操作系統。Amiga、BeOS、VMS、MVS 和 Apple Macintosh 等也只是 Perl 已經完成移植的平台的一小部分。

廣告

perl -什麼是Perl

Perl原名pearl,但是在這個語言官方發表前,拉里·沃爾發現已經有個編程語言「pearl」,便將這個編程語言的名字改成Perl。對於Perl這四個字母,有一些解釋,包括充滿幽默感的「Pathologically Eclectic Rubbish Lister」。「Practical Extraction and Report Language」曾經出現在很多有關Perl的數據里,包括官方的首頁。不過事實上這個長名字是後來湊出來的。它的名字第一個字母大寫(Perl)時就指這個編程語言,無大寫字母(perl)時就指它的解釋器。將Perl寫成「PERL」是不適當的,因為它並非一個縮寫字。

廣告

perl -獲得Perl
http://www.perl.org/get.html

perl -Perl 可以做什麼

Perl 能做的事太多了!應該問Perl不能做什麼。使用Perl可以輕鬆完成下列任務:

處理文本數據.
網路編程
資料庫處理
XML 處理
系統維護
圖像處理
....
很多人使用 Perl 來替代 shell, 很多人使用 Perl 來避免編寫繁瑣的 C , C++ 或 Java 程序. 如果程序要求高效率, 可以把費時部分用 C 寫, 然後與 Perl 結合使用.

幾乎可以使用 Perl 來解決所有問題

perl -怎麼學習 Perl

首先,尋找志同道合的人們,是能否成功學習Perl的關鍵。一個良好的編程氛圍有助於在Perl的道路上走得更遠,Perlchina ( http://www.perlchina.org/ 中國Perl用戶推廣組 )就是一個好的選擇。

廣告

其次,學習Perl要找本好書。很多參差不齊的教材很可能會代入歧途。

perl -Perl 常見問題和誤解

Perl 就是 CGI
噓... 小聲. 說這樣的話會讓懂 Perl 的人笑掉大牙。CGI 是 Common Gateway Interface 的簡稱。其主要的功能是在 WWW 環境下,藉由從客戶端傳遞一些訊息給 WWW Server,再由 WWW Server 去啟動所指定的程序碼來完成特定的工作. PHP / Python / Perl 都可以撰寫基於 CGI 的程序. 另外, Perl 可以做太多東西, 把它的功能僅限制在網路上實在是暴胗天物.

perl -Perl 難學么?

不難. Perl 很容易上手,整個學習過程也都相對容易. Perl 看起來和其他的編程語言類似. 如果你有寫過 C, awk , shell 或 BASIC 程序, 你對 Perl 就不會感到陌生. 你並不需要對 Perl 完全了解來解決大部分的問題. Perl 有一句名言, TMTOWTDI "there's more than one way to do it" ( perl 可以用不同方法來解決同一個問題 ). 可以說,學習 Perl 很容易但如果你要想使用 Perl 來解決更多問題, 就要準備一些時間了. 最後, Perl 很多時候是一個即時編譯的語言. 你可以很容易,迅速的測試,調試寫出的程序而不用考慮再編譯. 這會讓學習 Perl 的過程變的更簡單.

廣告

perl -Perl 程序難以維護?

看情況而定. Perl 的語法和參數多種多樣, 變數定義靈活, 由此允許程序員通過很多捷徑使用很短代碼解決問題, 上面提到的那句 Perl 名言在一定程度上驗證了這一點. 正確利用 Perl 的這些特性, 有經驗有紀律的程序員一樣可以寫出易於維護的代碼, 但又有多少程序員可以劃到上面那一類的? 如果你對 Perl 了解不夠, 編程經驗不足, 使用 Perl 來開放大型項目往往是個災難的選擇. 這就好像,正確使用火藥,你可以達到自己的目的, 但錯誤使用很可能就會傷及自身. Perl 就是這樣.

perl -成為一個 Perl 程序員么?

 把自己的知識只局限為 Perl 不是一個明智的職業選擇. 實際上, 可以把上面那一句里的 Perl 換成任何一個電腦語言. 將來,可能會因為公司不在使用 perl 了, 市場上不在追捧 Java 了,而失去工作機會. 往往是那些懂得幾種技術,並可以結合使用的人最容易找到工作. Perl 不代表一切. 同樣的問題可以用 Perl 或 PHP 或 Python 來解決. "Perl good, others bad", 因為對 Perl 的喜好而排斥其他語言實在是狹隘的讓人可笑. 很多時候 Perl 被用作粘合工具,溝通不同程序,語言,另些時候 Perl 是系統管理員的手中法寶. 名片不一定寫著 Perl 程序員, 但會時不時的使用 Perl 來讓工作變得更容易.
Java / C / Perl
大部分語言都有自己的設計目的,擅長領域.
C / C++ 常被用來開發底層程序, 程序員要自己做內存管理,就算是非常有經驗的 C 程序員也難免犯 overflow 的問題. 但這並不代表 C 設計的不好, 不安全. 因為正是 C 的這些特性才讓我們寫出高效的程序, 內核,驅動等. 作為程序員你就需要了解 C 的這些特性,盡量避免犯這些錯誤. Java 和其他 strongly typed 語言, 在程序設計上就把程序員禁錮在一個保險箱里,使他們避免犯錯誤. 在開發大型工程時,Java 程序員寫出的程序就容易一致化, 由此降低工程開發的成本. 這大概解釋了市場上對 Java 程序員的需求. 而 Perl 是 loosly typed, 語法和參數多種多樣, 變數定義靈活. 由此給了程序員很大的自由,大大縮短了程序開發時間. 但如何讓十幾個 Perl 程序員寫出一致,易維護的程序就困難多了. 使用任何語言都可以寫出糟糕的程序, 只是 Perl 讓程序員更容易的寫出糟糕的程序罷了. 但很多時候只要能夠 *解決* 問題, 沒人在乎你用的什麼語言. 對一門電腦語言愛好但不盲目. 選擇 C 而不是 Java 去寫底層系統. 選擇 Perl 而不是 Java 來分析 log.

廣告

perl -可以用 Perl 來做【某種差事】嗎?

 Perl 有足夠的彈性和擴充性,從只需要寫短短一行的檔案處理工作到複雜的系統,幾乎沒有什麽做不到的。對有些人來說,Perl 被用來做 shell 程式的理想替代品。其他人則用高階的 Perl 替代許多原先需要用 C 或 C++ 一類的低階語言來達到的程式。哪些差事決定要用 Perl 來處理,這一切都得看你(或許還有你的經理...)。如果您有一個提供 API 的程式庫的話,您可用 C 或 C++ 來寫一個 Perl 延伸,然後便可透過它將程式庫中的任何一部分動態載入您的 Perl 主程式中。您也可以反過來,用 C 或 C++ 來寫主程式,然後以即時動態載入的方式插入一些 Perl 程式碼,產生一個威力強大的應用程式。話雖如此,對解決某些特定的問題,使用小型、專精,專為特殊用途設計的語言總是比較方便的。 Perl 的設計是儘力地滿足各種不同人的需要,因而不特別偏頗任何人。至於特殊功能語言的例子,隨便舉兩個,譬如 prolog 和 matlab 便是。

perl -Perl 的文化及其他

編程本應是有趣的事情

Perl 就象一門自然語言. 你可以用它說簡單的 '你好' '再見' , 也可以寫出莎士比亞式的文章. Perl 博大精深,沒有人可以完全透徹的理解 Perl. 就算 Perl 的發明者 Larry Wall 也不一定可以這麼說. Larry 發明了 Perl, 成千上萬的開發者成就了今天的 Perl. 就像藝術家一樣, 編程也需要靈感和創造力. 而 Perl 給了程序員最大的自由來表達自己, 編程真正變成了有趣的事情. 使用 Perl 語言來創作詩歌就是屬於Perl文化中的一個奇迹.

廣告

廣告