Perl一般被認為是Practical Extraction and Report Language(實用擷取與報表語言)的縮寫,是由C以及sed、awk、Unix shell及其它語言演化而來的一種語言。它由語言學家Larry Wall最初發明及實現。Perl是一種為掃描任意的文字檔,從這些文字檔中擷取資訊,基於這些資訊列印報表而最佳化的語言。它也很適合於完成許多系統管理的任務。Perl是一種粘合性語言,旨在實用(易用、高效、完整)而不是漂亮(優美、小巧)。其吉祥物是駱駝,取其雖並不漂亮卻任勞任怨、能幹活之特點。
Perl不隨意限制資料的大小,只要你有充足的記憶體。遞迴的深度也不受限制。關聯陣列使用可以根據需要擴充以避免效能衰退。Perl能利用複雜的模式比對技巧來快速掃描大量資料。儘管善於處理文本,Perl也能處理位元據。
Perl 5增加了模組化處理、物件導向編程、引進引用以處理多維陣列等複雜的資料結構、Unicode支援、多線程支援等功能,使得Perl成為一種更加完備強大的語言。(以上編譯自Perl manpage的Perl語言簡介)
Perl語言的座右銘是:There’s More Than One Way To Do It (TMTOWTDI,有多種方法可以完成一件事,或者“條條道路通北京”)。Perl是一種自然和智能語言,它能根據上下文環境解釋執行,同時有大量省略寫法。
如果你通常想使用sed、awk或sh來解決的問題,但是卻發現它們的能力不夠,或者想運行得更快一點,卻不想傻傻地用C來寫,Perl將是很好的選擇。Perl擅長於文本處理和系統管理,不適合於即時嵌入式系統編程、作業系統底層開發(比如驅動程式開發)、複雜的多線性共用記憶體應用以及極度大的應用。
Perl語言的長處:
*強大的Regex和模式比對功能(接近理想的Regex語言)
*複雜靈活的資料結構(Array of Array, Array of Hash,Hash of Array, Hash of Hash等)
*Unicode支援(相對AWK與C)
其不足是:
*動態類型語言,不是很可靠
*自然語言,是優點也是缺陷,使得Perl語言代碼可能晦澀難懂;
*智能語言,是優點也產生不足:根據上下文解釋編程者之意,可能產生臆斷;也因此產生種種編程陷阱。
*不是很優美。多種方法做事,有時會讓編程者無所適從。
*效能問題。Perl靈活的資料結構和處理效能通常不是很高(相對C/C++),若需要高效能的處理有時需要使用其它語言重寫。
Perl語言的學習曲線淺而長。只要看看《Learning Perl》,就可以編寫簡單的Perl程式了,然而要深入掌握Perl,要使用Perl的複雜資料結構,進行物件導向編程、多線程編程則不是那麼容易的事,需要很長的時間學習和實踐。