Perl的命令行参数和ARGV
Perl的命令行参数和ARGV
Perl程序名:$0
$0
表示当前正在运行的Perl脚本名。有3种情况:
- 如果执行方式为
perl x.pl
,则$0
的值为x.pl
而非perl命令本身 - 如果执行方式为
./x.pl
,则$0
的值为./x.pl
- 如果执行的是
perl -e
或perl -E
一行式perl程序,则$0
的值为-e
或-E
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 | /usr/bin/perl |
执行这个程序:
1 | shell> ./test.plx -w a b c d |
因为是数组,所以可以修改数组,比如强制指定元素:
1 | /usr/bin/perl |
1 | shell> ./test.plx a b c d |
例如,读取2个文件(a.log,b.log)的内容:
1 | /usr/bin/perl |
1 | shell> ./test.plx a.log b.log |
如果想读取标准输入,只需使用”-“作为文件参数即可。
1 | $ echo -e "abcd\nefg" | ./test.plx a.log - b.log |
上面将按先后顺序读取a.log,标准输入(管道左边命令的输出内容),b.log。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 骏马金龙!
评论