Perl的命令列引數和ARGV

2021-09-08 22:59:22 字數 1589 閱讀 6480

$0表示當前正在執行的perl指令碼名。有3種情況:

如果執行方式為perl x.pl,則$0的值為x.pl而非perl命令本身

如果執行方式為./x.pl,則$0的值為./x.pl

如果執行的是perl -eperl -e一行式perl程式,則$0的值為-e-e

ar**陣列索引從0開始計算,索引0位從指令碼名(perl程式名)之後的引數開始計算

預設,這些命令列引數是perl程式的資料輸入源,也就是perl會依次將它們當作檔案進行讀取

引數是有序的,讀取的時候也是有序的

需要區分ar**變數和ar**陣列:

例如,test.plx的內容如下:

/usr/bin/perl

print '$ar**[0] ---> ',$ar**[0],"\n",

'$ar**[1] ---> ',$ar**[1],"\n",

'$ar**[2] ---> ',$ar**[2],"\n",

'$ar**[3] ---> ',$ar**[3],"\n",

'$ar**[4] ---> ',$ar**[4],"\n";

執行這個程式:

shell> ./test.plx -w a b c d

$ar**[0] ---> -w

$ar**[1] ---> a

$ar**[2] ---> b

$ar**[3] ---> c

$ar**[4] ---> d

因為是陣列,所以可以修改陣列,比如強制指定元素:

/usr/bin/perl

@ar**=qw(first second third);

print '$ar**[0] ---> ',$ar**[0],"\n",

'$ar**[1] ---> ',$ar**[1],"\n",

'$ar**[2] ---> ',$ar**[2],"\n";

shell> ./test.plx a b c d

$ar**[0] ---> first

$ar**[1] ---> second

$ar**[2] ---> third

例如,讀取2個檔案(a.log,b.log)的內容:

/usr/bin/perl

while(<>)

shell> ./test.plx a.log b.log
如果想讀取標準輸入,只需使用"-"作為檔案引數即可。

$ echo -e "abcd\nefg" | ./test.plx a.log - b.log
上面將按先後順序讀取a.log,標準輸入(管道左邊命令的輸出內容),b.log。

Perl 命令列引數

一 perl中的命令列引數 perl提供了乙個特殊的內建陣列 argv來存放使用者從命令列輸入的引數 功能跟c c 的命令列引數一樣,但是實現上不太一樣 perl中定義的命令列引數不包含perl命令和perl命令後面的perl程式檔名,即 不包含 perl 程式檔名 也就是說,陣列 argv中存放的...

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 在指令碼中...

Perl命令列開關

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