Perl-16—命令列參數

來源:互聯網
上載者:User

一、Perl中的命令列參數:

Perl提供了一個特殊的內建數組@ARGV來存放使用者從命令列輸入的參數;功能跟C/C++的命令列參數一樣,但是實現上不太一樣;Perl中定義的命令列參數不包含perl命令和perl命令後面的perl程式檔案名稱,即:不包含“perl  程式檔案名稱”,也就是說,數組@ARGV中存放的全都是使用者在命令列上輸入的參數,不包含“perl   程式檔案名稱”;從“ perl  程式檔案名稱”之後開始,到斷行符號鍵之間的參數才會被儲存到數組@ARGV中;$ARGV[0]中存放的是使用者輸入的第一個參數;Perl5把調用程式名儲存在特殊變數$0中;命令列的各個參數之間用空格隔開;

數組@ARGV中的每個儲存單元中存放是命令列中使用空格分隔開的項目;如果命令列上有字串參數,而且字串之間需要有空格的話,這個時候需要使用引號把這些含有空格的字串括起來,否則會被Perl解譯器解釋為多個參數而被存入到數組@ARGV的多個不同的儲存單元中; 

在產生數組@ARGV的同時還會組建檔案控制代碼ARGV,以及數組最後單元索引$#ARGV;可以使用迴圈對數組@ARGV進行處理;如果數組@ARGV為空白數組,則數組最後儲存單元的下標索引$#ARGV的值為-1,即:$#ARGV = -1 ;對任意一個空數組來說,都是這樣的:數組最後儲存單元索引的下標為-1;

二、使用<>檔案操作符:

Perl中,<>操作符實際上是對數組@ARGV的隱含的引用,其工作原理為:

1、當Perl解譯器第一次看到<>操作符時,開啟以$ARGV[0]為檔案名稱的檔案;

2、執行動作shift(@ARGV);即把數組@ARGV中的所有元素向前移動一個位置,數組中的元素數量也減1;

3、<>操作符讀取在第一步中開啟的檔案中的所有行;

4 、讀完之後,解譯器回到第一步中重複操作;

可以使用命令列變數作為檔案表處理的簡單文法為如下:

while (<>);

這一行代碼的作用就是開啟和關閉特殊檔案控制代碼ARGV、設定$ARGV變數和讀取檔案中的每一行;使用特殊檔案控制代碼ARGV來處理檔案,確實比較方便,但是也有一定的難度,讀取數組@ARGV中的每一個元素,確定每個值對應的開關和確定何時有檔案需要處理並不容易;

三、檔案的緩衝設定:

預設情況下,Perl解譯器對檔案是使用緩衝的:$I = 0;

為了告訴Perl解譯器不對檔案使用緩衝,可以使用以下方法:
1、使用select()函數選擇一個指定的檔案作為當前預設的檔案;
2、把系統內建的特殊變數 $I設定為1: $I = 1;

系統變數$I會告訴Perl解譯器是否對檔案進行緩衝而不管是否應該進行緩衝;如果$I為非零值,則表示不使用緩衝;如果$I為0值,則表示使用緩衝;系統變數$I與系統變數$~和$^協同工作;當沒有調用select()函數時,$I影響當前預設的檔案;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.