$0
表示當前正在運行的Perl腳本名。有3種狀況:shell
perl x.pl
,則$0
的值爲x.pl
而非perl命令自己./x.pl
,則$0
的值爲./x.pl
perl -e
或perl -E
一行式perl程序,則$0
的值爲-e
或-E
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
表示命令行參數表明的文件列表中,當前被處理的文件名@ARGV
表示命令行參數數組$ARGV[n]
:表示命令行參數數組的元素ARGV
:表示<>
當前正在處理的文件句柄例如,test.plx的內容以下:數組
/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";
執行這個程序:命令行
shell> ./test.plx -w a b c d $ARGV[0] ---> -w $ARGV[1] ---> a $ARGV[2] ---> b $ARGV[3] ---> c $ARGV[4] ---> d
由於是數組,因此能夠修改數組,好比強制指定元素:code
/usr/bin/perl @ARGV=qw(first second third); print '$ARGV[0] ---> ',$ARGV[0],"\n", '$ARGV[1] ---> ',$ARGV[1],"\n", '$ARGV[2] ---> ',$ARGV[2],"\n";
shell> ./test.plx a b c d $ARGV[0] ---> first $ARGV[1] ---> second $ARGV[2] ---> third
例如,讀取2個文件(a.log,b.log)的內容:索引
/usr/bin/perl while(<>){ print $_; }
shell> ./test.plx a.log b.log
若是想讀取標準輸入,只需使用"-"做爲文件參數便可。test
$ echo -e "abcd\nefg" | ./test.plx a.log - b.log
上面將按前後順序讀取a.log,標準輸入(管道左邊命令的輸出內容),b.log。變量