[Perl] 程式設計教學:簡介| 開源技術教學網
文章推薦指數: 80 %
撰寫新的應用程式. Perl 的優缺點. 在類Unix 系統中,和文字處理高度相關的命令列工具有 grep(1) ...
由MichelleChen撰寫。
最後修改於西元2022年01月30日
開源教學Perl程式設計簡介
前言
近年來,Perl的確在式微中。
在Perl、Python、Ruby三個性質接近的命令稿語言中,許多新的應用都會優先發表相對應的Python套件。
反之,很少開發團隊會主動寫新的Perl套件。
每隔一陣子,就會有某篇部落格文章說「Perl已死」,現在仍然值得學Perl嗎?
Perl在現代的角色
筆者認為,即使到了21世紀,Perl仍然可以學,但我們對Perl的視角略為調整。
我們將Perl視為一種具有程式語言的命令列工具,而非一種通用型程式語言。
在這種思維下,我們僅需學習其中一部分的Perl特性,就足以滿足我們日常任務的需求;相對來說,有些特性可以暫時不學,需要時再補足即可。
目前來說,可以優先學習的特性如下:
單行程式(one-liner),這是在命令列直接使用Perl程式的方式
撰寫簡短、重用性低的命令稿
取代shell命令稿
執行一些現有的函式庫或應用程式
相對來說,以下特性優先次序較低:
撰寫物件導向程式
撰寫新的套件
撰寫新的應用程式
Perl的優缺點
在類Unix系統中,和文字處理高度相關的命令列工具有grep(1)、sed(1)、awk(1)、perl(1)、ruby(1)。
在這些工具中,AWK、Perl、Ruby具有處理欄位(column)的能力,也具有完整的程式語法,算是兼具命令列工具和程式語言特性的軟體。
由於perl可以寫出等效而略長的grep、sed、awk指令,而Perl的正規表示式特性又比這些工具強;筆者的sed和AWK老是學不好,就是因為筆者知道自己可以撰寫等效的perl指令,省下學習重複的工具的心力和時間。
更深入的討論可看StackOverflow上的相關討論串。
ruby刻意在語言特性上師法perl,理論上Rubyone-liner可以做到和Perlone-liner差不多的功能,但Perl某些在工程上不利的特性、像是弱型別、預設變數值等,對於寫oneliner反而好用,而且Perl的歷史比Ruby久,相關的資料比較好找。
另外,Perl在大部分的類Unix系統上是預裝的軟體,預裝Ruby的機率相對少。
筆者並不覺得Ruby本身有什麼問題,只是在寫oneliner上沒有特別優勢。
Perl的語法傾向於易寫難讀,對於熟悉Perl的程式設計者,可以流暢地使用許多Perl的內隱規則寫出相當簡短的(compact)Perl程式。
但對於團隊工作來說,過度地使用內隱規則反而不利於維護程式碼,不一定每個團隊成員都熟悉Perl的內隱規則。
Perl的建議用途
綜合以上想法,我們將一些重用性低的小型任務用Perl撰寫,這時不太需要去在意工程性的議題;需要團隊合作的程式專案,則改用其他更適合的工具。
在這個部分,Perl和Python的功能是重疊的,讀者可自行選擇喜好的工具。
由於Perl可以和系統上的命令列工具互動,在一些情境中,Perl也可以用來代替shell命令稿。
用Perl命令稿代替shell命令稿的好處是Perl在程式語言方面的功能比shell來得豐富、有串列和雜湊可用、在字串處理上也會更容易。
使用Perl取代shell的壞處則是Perl命令稿會比等效的shell命令稿寫起來長一些,讀者可視情形自行選擇適合的工具。
在Windows上,也可用Perl取代內建的Batch。
由於Perl的歷史悠久,有一些軟體會用Perl撰寫,學習Perl就可以立即使用這些現有的方案。
一些實例像是BioPerl或是EUtilities等,在這個兩個例子中,前者是Perl套件,使用者要撰寫Perl命令稿才能使用,後者則是應用程式,使用者不需要學習Perl,只要把Perl視為一種運行環境(runtimeenvironment)即可。
相對於前述優點,Perl在工程性較弱,對於需長期使用的應用程式,Perl可能不是最佳的選項,這時候或許可以考慮和Perl特質相近的Python。
因此,對於和撰寫應用程式或函式庫相關的特性,就不用急著去學,那天有需要時再補強即可。
迎接Perl7的到來
Perl在大版本號來到7之後,雖然語法和Perl5大抵上雷同,但會有更適合於現代的預設設置。
也就是說,在盡力避免Perl社群分裂的前提下完成Perl的現代化工程。
待更多Perl7的資訊出現,筆者也會更新本系列文章的內容。
本文目錄
前言Perl在現代的角色Perl的優缺點Perl的建議用途迎接Perl7的到來
回頁頂
回首頁
延伸文章資訊
- 1[Perl] 程式設計教學:基本觀念| 開源技術教學網
Perl 程式有兩種執行方式:. 撰寫Perl 命令稿後,執行該命令稿; 從命令列直接執行Perl 程式(即Perl one-liner). 第一種方式是大部分高階直譯語言都會 ...
- 2[Perl] 程式設計教學:簡介| 開源技術教學網
撰寫新的應用程式. Perl 的優缺點. 在類Unix 系統中,和文字處理高度相關的命令列工具有 grep(1) ...
- 3Perl 程式設計教學 - G. T. Wang
這裡整理了一些關於Perl 程式語言的教學資源。 精簡扼要的Perl 課程講義. 這是我以前在講授Perl 課程時所編撰的講義,內容非常精簡扼要。 由於當初的課程是直接上機 ...
- 4[PERL] 01-撰寫第一隻PERL程式及目錄 - 精讚
環境建立; [CentOS LINUX]; [WINDOWS]; 第一隻程式; 執行; PERL的線上說明文件. PERL這個系列我準備寫一些基本的文件,用簡單的內容寫出來,主要是寫 ...
- 5新手上路指南 - 朝陽科技大學
執行perl 程式 · 用vi 或nano 等文字檔編輯器建立一個文字檔, 裡面寫perl 程式, 再下perl 命令去執行這個檔案。 · 在UNIX 或cygwin 環境下, 可以在上述的pe...