Perl的命令行参数和ARGV - 骏马金龙- 博客园
文章推薦指數: 80 %
perl将perl命令行的参数列表放进数组ARGV(@ARGV)中。
既然是数组,就可以访问($ARGV[n])、遍历,甚至修改数组元素; ARGV数组分三种情况收集:.
首页
新闻
博问
专区
闪存
班级
我的博客
我的园子
账号设置
简洁模式...
退出登录
注册
登录
骏马金龙
(博客已搬家:www.junmajinlong.com)
网名骏马金龙,钟情于IT世界里的各种原理和实现机制,强迫症重症患者。
爱研究、爱翻译、爱分享。
特借此一亩三分田记录自己成长点滴!!!
骏马金龙
网名骏马金龙,钟情于IT世界里的各种原理和实现机制,强迫症重症患者。
爱研究、爱翻译、爱分享。
特借此一亩三分田记录自己成长点滴!!!
Perl的命令行参数和ARGV
程序名:$0
$0表示当前正在运行的Perl脚本名。
有3种情况:
如果执行方式为perlx.pl,则$0的值为x.pl而非perl命令本身
如果执行方式为./x.pl,则$0的值为./x.pl
如果执行的是perl-e或perl-E一行式perl程序,则$0的值为-e或-E
命令行参数ARGV
perl将perl命令行的参数列表放进数组ARGV(@ARGV)中。
既然是数组,就可以访问($ARGV[n])、遍历,甚至修改数组元素
ARGV数组分三种情况收集:
perlx.plabc方式运行时,脚本名x.pl之后的abc才会被收集到ARGV数组
./x.plabc方式运行时,abc才会被收集到ARGV数组
perl-e'xxxxx'abc方式运行时,abc才会被收集到ARGV数组
ARGV数组索引从0开始计算,索引0位从脚本名(perl程序名)之后的参数开始计算
默认,这些命令行参数是perl程序的数据输入源,也就是perl会依次将它们当作文件进行读取
参数是有序的,读取的时候也是有序的
需要区分ARGV变量和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-wabcd
$ARGV[0]--->-w
$ARGV[1]--->a
$ARGV[2]--->b
$ARGV[3]--->c
$ARGV[4]--->d
因为是数组,所以可以修改数组,比如强制指定元素:
/usr/bin/perl
@ARGV=qw(firstsecondthird);
print'$ARGV[0]--->',$ARGV[0],"\n",
'$ARGV[1]--->',$ARGV[1],"\n",
'$ARGV[2]--->',$ARGV[2],"\n";
shell>./test.plxabcd
$ARGV[0]--->first
$ARGV[1]--->second
$ARGV[2]--->third
例如,读取2个文件(a.log,b.log)的内容:
/usr/bin/perl
while(<>){
print$_;
}
shell>./test.plxa.logb.log
如果想读取标准输入,只需使用"-"作为文件参数即可。
$echo-e"abcd\nefg"|./test.plxa.log-b.log
上面将按先后顺序读取a.log,标准输入(管道左边命令的输出内容),b.log。
作者:骏马金龙
出处:http://www.cnblogs.com/f-ck-need-u/
Linux运维交流群:921383787
Linux系列文章:https://www.junmajinlong.com/linux/index/
Shell系列文章:https://www.junmajinlong.com/shell/index/
网站架构系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html
MySQL/MariaDB系列文章:https://www.cnblogs.com/f-ck-need-u/p/7586194.html
Perl系列:https://www.junmajinlong.com/perl/index
Go系列:https://www.cnblogs.com/f-ck-need-u/p/9832538.html
Python系列:https://www.cnblogs.com/f-ck-need-u/p/9832640.html
Ruby系列:https://www.junmajinlong.com/ruby/index
操作系统系列:https://www.junmajinlong.com/os/index/
精通awk系列:https://www.junmajinlong.com/shell/awk/index
posted@
2018-08-2921:38
骏马金龙
阅读(21759)
评论(0)
编辑
收藏
举报
刷新评论刷新页面返回顶部
Copyright©2022骏马金龙
Poweredby.NET6onKubernetes
😀点这里关注我😀
QQ群921383787
缩/放目录
延伸文章資訊
- 1[PERL] 命令列傳入參數argv @新精讚
Perl 的外部傳參,是$ARGV[0]、$ARGV[1]、$ARGV[2].....
- 2@ARGV - Perldoc Browser
The array @ARGV contains the command-line arguments intended for the script. $#ARGV is generally ...
- 3Perl Display And Pass Command Line Arguments With @argv
Perl command line arguments stored in the special array called @ARGV . The array @ARGV contains t...
- 4Processing command line arguments - @ARGV in Perl
Perl automatically provides an array called @ARGV, that holds all the values from the command lin...
- 5Why is $#ARGV 0? - perl - Stack Overflow
$#ARGV is the count of the array elements so the count of @ARGV here. It is 0 as arrays start at ...