Perl 命令列引數

2021-05-31 21:18:28 字數 1330 閱讀 6359

一、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影響當前預設的檔案;

Perl的命令列引數和ARGV

0表示當前正在執行的perl指令碼名。有3種情況 如果執行方式為perl x.pl,則 0的值為x.pl而非perl命令本身 如果執行方式為.x.pl,則 0的值為.x.pl 如果執行的是perl e或perl e一行式perl程式,則 0的值為 e或 e ar 陣列索引從0開始計算,索引0位從指令...

Perl命令列開關

0 規定記錄分隔符 a 與 n 或者 p 一起使用,負責開啟自動拆分模式,用於對空白字元進行隱式拆分,並將字段放入陣列 f 中,例如 date perl ane print f 0 n c 只檢查 perl 指令碼語法,而不執行指令碼 d 對指令碼開啟 perl 偵錯程式 d 設定 perl 的除錯...

perl中重要的幾個命令列引數

perl的命令列引數很多,但常用到的就那麼幾個 a e,n,p,i a 使用空白作為預設分隔符,等同下面 f split 例 perl ane print pop f file 等同下面 while e 加入一條指令碼執行命令 例 perl e print hello world n n 在指令碼中...