Perl 作為命令列實用程式(轉)

ba發表於2007-08-11
Perl 作為命令列實用程式(轉)[@more@]  那些將 Perl 用作程式語言的人經常忽視了:Perl 用作命令列操作的快速而又難看的指令碼編制引擎時是很有用的。透過命令列,Perl 僅用一行就可以實現大多數其它語言需要數頁程式碼才能完成的任務。跟著 Teodor,他會教給您一些有用的示例。
為了完成這一篇 how-to 文章,您需要在系統上安裝 Perl 5.6.0。您的系統最好安裝比較新(2000 或更新)的 Linux 或 Unix,但是其它作業系統也能照樣工作。所有的示例都使用 tcsh shell(儘管 bash 及其它 shell 也能工作)。雖然這些示例也許可以和較早版本的 Perl、Linux 及其它作業系統一起工作,但是如果它們不能一起工作,那麼它們無法工作的原因可以作為練習,讓讀者去解決。
我想說的第一點是:有經驗的程式設計師不應迴避快速而又難看的解決方案。在其它專欄文章中,我已經強調了文件編制和徹底性。本專欄文章將集中在程式設計的消極面,其中文件編制是可選的,而咖啡因卻無從選擇。因為我們已經身陷其中。
第二點和第一點一樣重要:快速而又難看的解決方案很難正確完成。如果您知道如何記錄、測試和除錯完整的指令碼,那麼您就非常有可能在一行程式中取得成功。如果您不知道怎樣做,那麼這就像是企圖用鯡魚來砍倒紅杉樹(而您的技能就是那條鯡魚)。
第一步,您應該學習 shell 的特性:Unix 將命令列引數傳遞給 Perl 的方式及這些引數的 Perl 解釋方法。
命令列的實質
在 Unix 中您將看到可執行任務的概念,一個程式通常是裝入記憶體的程式。除了初始程式外,程式都可以由其它程式來啟動,初始程式通常是由核心(有時由核心程式)來啟動的。就使用者的觀點而言,啟動程式需要 shell 或啟動程式。因此,當使用者在 shell 命令列輸入"xeyes"或者從啟動程式選單(類似於 GNOME 工作列)選擇 X Eyes 應用程式時,shell 或啟動程式建立新的程式以執行該程式。
程式獲得命令列引數。因此,例如,"perl"和"perl -w"是對同一個程式的兩種不同呼叫。在內部,Perl(類似於 C)將引數傳遞給它用 @ARGV 陣列解釋的指令碼。但是和 C 不同的是,Perl 偷偷地從指令碼中"竊取"其中一些引數以用於自己的用途。例如,正在解釋的指令碼看不到傳給 Perl 直譯器的"-w"引數,除非指令碼看來需要它。shell 用空格字元隔開引數。
傳給 Perl 的"-e"引數告訴 Perl 獲取命令列中"-e"後的任何內容並將它當作指令碼來執行。"-M"參數列示獲取其後的任何內容並將該內容作為模組匯入,類似於正規指令碼中的"use ModuleName"。請參閱 perldoc perlrun 頁面以獲取有關 Perl 必須從命令列提供的開關的更多資訊。
可能最好在這裡舉些示例。根據本專欄文章的精神,讓我們使用一行程式。指令碼的 -MData:umper -e'print Dumper -@ARGV' 部分只是列印出了 @ARGV 陣列的內容。
清單 1. 命令列引數
QUOTE:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947286/,如需轉載,請註明出處,否則將追究法律責任。

Perl 作為命令列實用程式(轉)
請登入後發表評論 登入
全部評論

相關文章