加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl中$#ARGV是什么意思

发布时间:2020-12-15 21:01:41 所属栏目:大数据 来源:网络整理
导读:$#作为一个变量表示打印数字时默认的数字输出格式,后面加上ARGV又表示什么意思呢? 遇到perl的问题首先查perldoc,在perlvar里查到关于@ARGV的一条: ????? The array @ARGV contains the command-line arguments intended for the script. $#ARGV is gener

$#作为一个变量表示打印数字时默认的数字输出格式,后面加上ARGV又表示什么意思呢?

遇到perl的问题首先查perldoc,在perlvar里查到关于@ARGV的一条:
????? The array @ARGV contains the command-line arguments intended for the script. $#ARGV is generally the number of arguments minus one,because $ARGV[0] is the first argument,not the program's command name itself. See $0 for the command name.
可以看出,$#ARGV为命令行参数(不包括命令本身)的个数减一,即数组@ARGV最后一个元素的索引。用处也就是在程序开始时判断命令行参数个数,或者直接操作最后一个命令行参数。

本质上,$#加数组名表示数组最后一个元素的索引,其实,这种糟糕的语法来源于C Shell,在实际的代码中不常见。判断命令行参数个数,可以把@ARGV用在标量上下文中,直接操作最后一个数组元素,可以利用负数索引值。(参见《perl语言入门》3.2 特殊的数组索引)

?

当perl脚本运行时,从命令行上传递给它的参数存储在内建数组@ARGV中,@ARGV是PERL默认用来接收参数的数组,可以有多个参数,$ARGV[0]是表示接收到的第一个参数,$ARGV[1]表示第二个。
使用方法为:
perl?

? my.pl $ARGV[0]? $ARGV[1] 看一个具体例子: 比如文件1的内容: 1320238 1320239 1320239 1320238 1320238 1320238 1320235 1320237 文件2的内容: 102 5709072117805887 4001 1301854 102 5709072117807510 4001 1320292 102 5709072117838653 4001 1301857 102 5709072117814280 4001 1305832 102 5709072117839397 4001 1310673 102 5709072117839335 4001 1311270 我想先把文件1的内容读取出来,然后读取文件二的内容,在读取文件2的内容的时候,文件2的最后一列需要包含在上文件1内。 [root@localhost ~]$ perl? ex.pl 1.txt 2.txt [root@localhost ~]$ cat ex.pl #!/usr/bin/perl use strict; open(ONE,"$ARGV[0]") or die $!; open(TWO,"$ARGV[1]") or die $!; my %hash; while (<TWO>) { ??? chomp; ??? my @line=split; ??? my $column4=$line[3]; ??? $hash{$column4}=$_; } while (<ONE>) { ???? chomp; ???? print $hash{$_} if defined $hash{$_}; ???? } print"n";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读