perl的命令行參數ARGV


  • perl將perl命令行的參數列表放進數組ARGV(@ARGV)中。既然是數組,就可以訪問($ARGV[n])、遍歷,甚至修改數組元素
  • ARGV數組分三種情況收集:
    • perl x.pl a b c方式運行時,腳本名x.pl之后的a b c才會被收集到ARGV數組
    • ./x.pl a b c方式運行時,a b c才會被收集到ARGV數組
    • perl -e 'xxxxx' a b c方式運行時,a b c才會被收集到ARGV數組
  • ARGV數組索引從0開始計算,索引0位從腳本名(perl程序名)之后的參數開始計算
  • 默認,這些命令行參數是perl程序的數據輸入源,也就是perl會依次將它們當作文件進行讀取
  • 參數是有序的,讀取的時候也是有序的
  • 需要區分ARGV變量和ARGV數組:
    • $ARGV表示命令行參數代表的文件列表中,當前被處理的文件名
    • @ARGV表示命令行參數數組
    • $ARGV[n]:表示命令行參數數組的元素
    • ARGV:表示<>當前正在處理的文件句柄

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

1
2
3
4
5
6
7
/usr/bin/perl

print '$ARGV[0] ---> ',$ARGV[0],"\n", '$ARGV[1] ---> ',$ARGV[1],"\n", '$ARGV[2] ---> ',$ARGV[2],"\n", '$ARGV[3] ---> ',$ARGV[3],"\n", '$ARGV[4] ---> ',$ARGV[4],"\n"; 

執行這個程序:

1
2
3
4
5
6
shell> ./test.plx -w a b c d $ARGV[0] ---> -w $ARGV[1] ---> a $ARGV[2] ---> b $ARGV[3] ---> c $ARGV[4] ---> d 

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

1
2
3
4
5
6
/usr/bin/perl

@ARGV=qw(first second third); print '$ARGV[0] ---> ',$ARGV[0],"\n", '$ARGV[1] ---> ',$ARGV[1],"\n", '$ARGV[2] ---> ',$ARGV[2],"\n"; 
1
2
3
4
shell> ./test.plx a b c d $ARGV[0] ---> first $ARGV[1] ---> second $ARGV[2] ---> third 

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

1
2
3
4
5
/usr/bin/perl

while(<>){ print $_; } 
shell> ./test.plx a.log b.log 

如果想讀取標准輸入,只需使用"-"作為文件參數即可。

$ echo -e "abcd\nefg" | ./test.plx a.log - b.log 

上面將按先后順序讀取a.log,標准輸入(管道左邊命令的輸出內容),b.log。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM