3. Perl 簡介

本章將對 Perl 做個簡單介紹。

3.1 Perl 是什麼?

Perl 是 Practical Extraction and Report Language(實務操作抽取與報告語言) 的簡稱。1987 年,Larry Wall 先生融合 AWK、Sed、C、shell 等語言的特色,創造了 Perl。最初 Larry Wall 在進行一項 WAN 的設定工作,他想要產生一份報告結果,但 AWK 做不到,不滿於 AWK sed shell 功能的不足,Larry Wall 發明了 Perl,並且開放出來給大家使用。

Perl 的出現,讓想要偷懶的管理者可以用非常輕鬆的方式完成工作。同樣一件事若用 C 來寫可能要幾百行甚至幾千行程式碼,但用 Perl 來寫可能只要幾十行就結束了,剩下的時間,當然可以用來偷偷懶,做一些工作之外比較有趣味的事情囉。後來大家都戲稱 Perl 是懶惰的程式設計師最愛用的語言,事實上,這也是 Perl 的設計風格之一。

Perl 最初僅著眼於文件(text)的處理,但因為實在太好用了,許多人要求 Larry Wall 先生加這個加那個,經過不斷的改良精進,發展至今,Perl 變成一個跨平台、十項全能、應用層面無所不包的重要語言,說它是一種通用目的高階程式語言,一點兒也不為過。

那麼,Perl 可以做什麼呢?舉凡:系統管理、網站設計、網路程式設計(FTP/Webmail/Mail/DNS....)、資料庫處理、文件處理、圖型使用介面、電腦病毒防治、垃圾郵件防堵、破解/防護、網路安全、駭客入侵等等.... 哇! 超能力! 有人說,現在網路管理者,不會寫 Perl 也要會用一點 Perl。可見 Perl 的重要性了! (事實上許多駭客,都喜歡用 Perl 來寫攻擊程式)

這麼強大的語言,會不會難用呢? 不會! Perl 不但功能完整而且相當容易使用、效率也不錯喔!

Perl 是直譯式的語言,寫好之後,馬上就可以執行,不必像 C 語言必須經過編譯、組譯、連結等冗長的過程,因此開發周期較短,也較為輕鬆。雖然 Perl 是直譯式的,但它的效能不錯,主要是因為 Perl 並非逐列直譯,Perl 執行前會先編譯為一種中間bytecode,然後再來執行。因此它有直譯式語言開發快速的優點,卻有編譯語言效率的優點。我們可以說 Perl 既是直譯又是編譯式的。

除此之外,Perl 自第 5 版之後,支援物件導向設計,具模組功能。Perl 的模組簡明易用,而且 Perl 的社群非常活躍,產量豐富,幾年下來,累聚非常龐大的模組程式庫,我們稱之為 CPAN (Comprehensive Perl Archive Network)。

通常,如果我們想要解決某一方面的問題時,都會先到 CPAN 程式庫去溜溜,看看是否有前輩已經寫出相關的模組?若有,就不再重新發明輪子,直接套用,或繼承之,做局部修改,即可輕鬆解決您所遇到的問題。

CPAN 可以說是目前全世界最豐富的模組函式庫之一,使用 Perl 的人就是這麼幸福!

Perl 要錢嗎?不用,Perl 不但免費而且跨平台,現今要找到一個平台不支援 Perl 的,恐怕很少了。

Perl 的主要站台:http://www.perl.com 目前由有名的書商 O'Reilly 大力支持。

Perl 最新的穩定版是 5.8.0,支援 unicode 喔! 而 Perl 的第六個版本:Perl 6 目前則已進入開發階段。Perl 6 採用 parrot 引擎,parrot 的網址:http://parrotcode.org/,parrot 是一個虛擬機器,可以有效地執行直譯語言的 bytecode,將來除了 Perl 6 之外,其它語言也可以通過 parrot 來執行,比如 Python、Java。

註 1:教網中心有收集完整的 CPAN,位址:ftp://ftp2.tnc.edu.tw/pub/unix/perl/CPAN/