Posted on 2010-01-25 16:23
Prayer 閱讀(438)
評論(0) 編輯 收藏 引用 所屬分類:
PERL
Perl是什么東西呢? 它是Practical Extraction Report Language等字的縮寫,是一種能掃視任意文字文件,并且能從中取出信息制成報表的解譯語言(Interpreter)。如果你懂UNIX的話,它的目 的就是用來取代UNIX原有的sed、awk與shell script的組合,用來匯集信息、產(chǎn)生報表的一個工具語言(程序)。Perl的作者是Larry Wall <lwall@netlabs.com>。他曾經(jīng)貢獻過好幾個很有用的Public Domain程序給大家使用,包括patch和rn。他設(shè)計Perl時的哲學(xué)是以實用為第一優(yōu)先(所謂的實用就是語言容易使用、有效率,而且完整),而不 是設(shè)計一個看起來很漂亮的語言(漂亮就是程序非常的小,語法幽雅,而且只由最少的語法基本元素構(gòu)成),所以只要你學(xué)上手了,你就會深深的喜歡上Perl的 實用性和方便性。
Perl包含了C、sed、awk和sh這幾個工具最好的特色,而且主要的語法很接近C語言,對原本熟悉C語言的人來說非常容易上手。就我個人的經(jīng)驗,除了C以外,如果能再懂shell script的語法是最好不過了,因為Perl中一些符號的使用和shell script是一致的。當然如果又懂得awk和sed那就更好了。Larry Wall說過一句話:「Perl是懶人用的工具」(于我心有戚戚焉^_^)。如果Perl不是比其它語言更好更簡單更容易上手,恐怕很少人愿意去學(xué)習(xí)新的程序語言。
正由于Perl的特性,容易處理字符串參數(shù)的傳遞,自然成了某些特殊用途的新寵,尤其是CGI,彷佛Perl天生是為了CGI而設(shè)計的! 事實上CGI本身定義是和使用的程序語言種類無關(guān)的,你可以用C、Fortran、甚至Visual Basic、Delphi來寫CGI程序。那為什么大家現(xiàn)在都采用Perl呢? 原因有下面幾點:
- ⊙Perl有非常杰出的文字處理能力,能輕易地產(chǎn)生HTML檔,尤其它具有完整的Regular Expression語法,使得在C語言看來必需要寫一大串程序代碼的功能,Perl幾行就解決了。
- ⊙Perl是一種直譯式語言,因此可以避免在各種不同系統(tǒng)上,還需要重新編譯的麻煩。
- ⊙Perl的檢查旗標(-T)可以保護你的Web Server,避免被未經(jīng)授權(quán)的client破壞。
一個語言的好壞,我想我們可以從三個方向來看:數(shù)據(jù)型態(tài)(data type)、流程控制敘述(control statements)、特殊功能。
- 1.Perl的數(shù)據(jù)型態(tài)跟C語言和Pascal不大一樣,但它也支持指標(pointer,Perl5以后才支持),所以也可以和C語言一樣組合出很復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(data structure)。特別的是Perl有一種新的data type:相關(guān)數(shù)組,它和一般數(shù)組沒什么不同,差別只在它的索引值是用字符串,而非一般常用的整數(shù)值,因此相關(guān)數(shù)組不像一般數(shù)組一樣有次序的概念,它沒有所謂的第一項數(shù)據(jù)這種說法。我個人認為如果能善用這種data type會帶給你意想不到的收獲哦。
- 2.Perl的條件控制敘述(conditional control statements)與循環(huán)控制敘述(loop control statements)幾乎和C語言一模一樣,甚至語法和一些常用的指令也和C語言很類似,這對一般使用者而言是很方便的,可以很快的讓使用者進入狀況, 進一步了解Perl的精華。而在Perl5中又引進了模塊化和區(qū)域變量(local variables)的觀念,大大的增強了Perl的能力,使Perl幾乎變得無所不能。
- 3.Perl處理字符串的能力是眾所皆知的,除了它的純量變量(scalar variable)可以很輕易的存取字符串,特別的是Perl提供和UNIX很相近的Regular Expressions語法,這種格式辨認(pattern-matching)的語法很復(fù)雜但十分強大,大大地增強了Perl處理字符串的能力,要善用Perl處理字符串的能力,就得先對Regular Expressions痛下一番功夫不可。這個東東實在不好懂,不過只要你用上了手,真的是如虎添翼,每次使用時都會為它強大的功能竊喜,反而覺得C平淡無奇。另外Perl有一堆特殊的全域變量(global variables),用來設(shè)定程序的執(zhí)行環(huán)境和其它細節(jié),可能小到數(shù)組索引的起始值,大到輸出字段的分隔符號都有影響。這么多的特殊變量對大多數(shù)的人而言是只是個困擾,但是我建議若要深入了解Perl、善用Perl,最好多了解這些特殊變量的意義。
說了這么多Perl的優(yōu)點,其實Perl也是有缺點的,最令人垢病的就是執(zhí)行速度。由于 Perl是直譯式的程序語言(Interpreter),不需要事先經(jīng)過編譯(compile),這一點在發(fā)展程序初期很有用,程序?qū)懞昧司涂梢灾苯?run了,但缺點是程序執(zhí)行的速度會變慢,不利于發(fā)展大程序或系統(tǒng)程序。不過Perl對上述一般解譯語言的缺點做了一點改良,它在執(zhí)行時會先加載整個程序 碼,并執(zhí)行初步的compile,包括語法檢查和建立符號表,因此Perl比一般script語言安全而且快多了。但是就我觀察所得,Perl有一些設(shè)計 實在很浪費內(nèi)存和CPU,似乎Perl并不很在意內(nèi)存和速度,而是以實用性和方便性為優(yōu)先考慮。其實由于硬件技術(shù)的進步,對現(xiàn)在來說,內(nèi)存和CPU 速度已經(jīng)不是那么令人在意,反而程序的安全性和親和性才是考慮的重點,像Microsoft WORD這只大怪獸一樣,所以對速度要求比較多的玩家,也只有請你多多忍耐了。
總而言之,Perl的優(yōu)點多多,尤其是它優(yōu)異的處理字符串能力,更使它異軍突起,成為CGI程序的新寵,這也是為什么Perl會流行起來的主要原因。
|