Perl語言簡介
文章推薦指數: 80 %
如果你懂UNIX的話,它的目的就是用來取代UNIX原有的sed、awk與shell script的組合,用來匯集資訊、產生報表的一個工具語言(程式)。
Perl的作者是Larry Wall ...
Perl語言簡介
Perl是什麼東西呢?
它是PracticalExtractionReportLanguage等字的縮寫,是一種能掃視任意文字檔,並且能從中取出資訊製成報表的解譯語言(Interpreter)。
如果你懂UNIX的話,它的目的就是用來取代UNIX原有的sed、awk與shell
script的組合,用來匯集資訊、產生報表的一個工具語言(程式)。
Perl的作者是Larry
Wall
他曾經貢獻過好幾個很有用的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)可以保護你的WebServer,避免被未經授權的client破壞。
一個語言的好壞,我想我們可以從三個方向來看:資料型態(data
type)、流程控制敘述(controlstatements)、特殊功能。
1.Perl的資料型態跟C語言和Pascal不大一樣,但它也支援指標(pointer,Perl5以後才支援),所以也可以和C語言一樣組合出很複雜的資料結構(data
structure)。
特別的是Perl有一種新的data
type:相關陣列,它和一般陣列沒什麼不同,差別只在它的索引值是用字串,而非一般常用的整數值,因此相關陣列不像一般陣列一樣有次序的概念,它沒有所謂的第一項資料這種說法。
我個人認為如果能善用這種data
type會帶給你意想不到的收獲哦。
2.Perl的條件控制敘述(conditionalcontrolstatements)與迴圈控制敘述(loopcontrolstatements)幾乎和C語言一模一樣,甚至語法和一些常用的指令也和C語言很類似,這對一般使用者而言是很方便的,可以很快的讓使用者進入狀況,進一步了解Perl的精華。
而在Perl5中又引進了模組化和區域變數(localvariables)的觀念,大大的增強了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會流行起來的主要原因。
延伸文章資訊
- 1Perl 程式設計教學 - G. T. Wang
這裡整理了一些關於Perl 程式語言的教學資源。 精簡扼要的Perl 課程講義. 這是我以前在講授Perl 課程時所編撰的講義,內容非常精簡扼要。 由於當初的課程是直接上機 ...
- 2Perl - 維基百科,自由的百科全書
Perl是高階、通用、直譯式、動態的程式語言家族。最初設計者拉里·沃爾為了讓在UNIX上進行報表處理的工作變得更方便,決定開發一個通用的手稿語言,而在1987年12月18日 ...
- 3第一章Perl 概述
如此,便可以直接執行這個程式,此程式的第一行便會告訴作業系統到哪裡去找到執行這個perl的程式。 在Windows NT中執行PERL程式 前面所提到的東西在UNIX 中可以很正常的 ...
- 4Perl語言簡介
如果你懂UNIX的話,它的目的就是用來取代UNIX原有的sed、awk與shell script的組合,用來匯集資訊、產生報表的一個工具語言(程式)。Perl的作者是Larry Wall ...
- 5新手上路指南 - 朝陽科技大學
執行perl 程式 · 用vi 或nano 等文字檔編輯器建立一個文字檔, 裡面寫perl 程式, 再下perl 命令去執行這個檔案。 · 在UNIX 或cygwin 環境下, 可以在上述的pe...