發新話題

Perl簡介

Perl簡介


Perl是什麼東西呢? 它是Practical Extraction Report Language等字的縮寫,是一種能掃視任意文字檔,並且能從中取出資訊製成報表的解譯語言(Interpreter)。如果你懂UNIX的話,它的目的就是用來取代UNIX原有的sed、awk與shell script的組合,用來彙集資訊、產生報表的一個工具語言(程式)。Perl的作者是Larry Wall <lwall@netlabs.com>。他曾經貢獻過好幾個很有用的Public Domain程式給大家使用,包括patch和rn。他設計Perl時的哲學是以實用為第一優先(所謂的實用就是語言容易使用、有效率,而且完整),而不是設計一個看起來很漂亮的語言(漂亮就是程式非常的小,語法幽雅,而且只由最少的語法基本元素構成),所以只要你學上手了,你就會深深的喜歡上Perl的實用性和方便性。


Perl包含了C、sed、awk和sh這幾個工具最好的特色,而且主要的語法很接近C語言,對原本熟悉C語言的人來說非常容易上手。就我個人的經驗,除了C以外,如果能再懂shell script的語法是最好不過了,因為Perl中一些符號的使用和shell script是一致的。當然如果又懂得awk和sed那就更好了。Larry Wall說過一句話:「Perl是懶人用的工具」(於我心有慼慼焉^_^)。如果Perl不是比其它語言更好更簡單更容易上手,恐怕很少人願意去學習新的程式語言。


正由於Perl的特性,容易處理字串參數的傳遞,自然成了某些特殊用途的新寵,尤其是CGI,彷彿Perl天生是為了CGI而設計的! 事實上CGI本身定義是和使用的程式語言種類無關的,你可以用C、Fortran、甚至Visual Basic、Delphi來寫CGI程式。那為什麼大家現在都採用Perl呢? 原因有下面幾點:

⊙Perl有非常傑出的文字處理能力,能輕易地產生HTML文件,尤其它具有完整的Regular Expression語法,使得在C語言看來必需要寫一大串程式碼的功能,Perl幾行就解決了。

⊙Perl是一種直譯式語言,因此可以避免在各種不同系統上,還需要重新編譯的麻煩。

⊙Perl的檢查旗標(-T)可以保護你的Web Server,避免被未經授權的client破壞。



一個語言的好壞,我想我們可以從三個方向來看:資料型態(data type)、流程控制敘述(control statements)、特殊功能。

1.Perl的資料型態跟C語言和Pascal不大一樣,但它也支援指標(pointer,Perl5以後才支援),所以也可以和C語言一樣組合出很複雜的資料結構(data structure)。特別的是Perl有一種新的data type:相關陣列,它和一般陣列沒什麼不同,差別只在它的索引值是用字串,而非一般常用的整數值,因此相關陣列不像一般陣列一樣有次序的概念,它沒有所謂的第一項資料這種說法。我個人認為如果能善用這種data type會帶給你意想不到的收穫哦。

2.Perl的條件控制敘述(conditional control statements)與迴圈控制敘述(loop control statements)幾乎和C語言一模一樣,甚至語法和一些常用的指令也和C語言很類似,這對一般使用者而言是很方便的,可以很快的讓使用者進入狀況,進一步瞭解Perl的精華。而在Perl5中又引進了模組化和區域變數(local variables)的觀念,大大的增強了Perl的能力,使Perl幾乎變得無所不能。

3.Perl處理字串的能力是眾所皆知的,除了它的純量變數(scalar variable)可以很輕易的存取字串,特別的是Perl提供和UNIX很相近的Regular Expressions語法,這種格式辨認(pattern-matching)的語法很複雜但十分強大,大大地增強了Perl處理字串的能力,要善用Perl處理字串的能力,就得先對Regular Expressions痛下一番功夫不可。這個東東實在不好懂,不過只要你用上了手,真的是如虎添翼,每次使用時都會為它強大的功能竊喜,反而覺得C平淡無奇。另外Perl有一堆特殊的全域變數(global variables),用來設定程式的執行環境和其他細節,可能小到陣列索引的起始值,大到輸出欄位的分隔符號都有影響。這麼多的特殊變數對大多數的人而言是只是個困擾,但是我建議若要深入瞭解Perl、善用Perl,最好多瞭解這些特殊變數的意義。

說了這麼多Perl的優點,其實Perl也是有缺點的,最令人垢病的就是執行速度。由於Perl是直譯式的程式語言(Interpreter),不需要事先經過編譯(compile),這一點在發展程式初期很有用,程式寫好了就可以直接run了,但缺點是程式執行的速度會變慢,不利於發展大程式或系統程式。不過Perl對上述一般解譯語言的缺點做了一點改良,它在執行時會先載入整個程式碼,並執行初步的compile,包括語法檢查和建立符號表,因此Perl比一般script語言安全而且快多了。但是就我觀察所得,Perl有一些設計實在很浪費記憶體和CPU,似乎Perl並不很在意記憶體和速度,而是以實用性和方便性為優先考量。其實由於硬體技術的進步,對現在來說,記憶體和CPU速度已經不是那麼令人在意,反而程式的安全性和親和性才是考慮的重點,像Microsoft WORD這隻大怪獸一樣,所以對速度要求比較多的玩家,也只有請你多多忍耐了。


總而言之,Perl的優點多多,尤其是它優異的處理字串能力,更使它異軍突起,成為CGI程式的新寵,這也是為什麼Perl會流行起來的主要原因。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。