Perl显示和使用@argv传递命令行参数
时间:2020-01-09 10:40:34 来源:igfitidea点击:
如何使用Perl读取或显示命令行参数?
Perl命令行参数存储在名为" @ARGV"的特殊数组中。
数组" @ARGV"包含用于脚本的命令行参数。
$$ARGV
通常是参数数目减去一个,因为$ARGV [0]是第一个参数,而不是程序命令名称本身。
请注意,当从<>读取时,$ARGV
包含当前文件的名称。
Perl @ARGV示例
使用$ARGV [n]显示参数。
使用$#ARGV获取传递给perl脚本的参数总数。
例如,如果您的脚本名是foo.pl:
./foo.pl one two three
您可以使用print命令打印一个,两个,三个命令行参数:
print "$ARGV[0]\n"; print "$ARGV[1]\n"; print "$ARGV[2]\n";
或者只是使用循环来显示所有命令行参数:
#!/usr/bin/perl # get total arg passed to this script my $total = $#ARGV + 1; my $counter = 1; # get script name my $scriptname =./script.pl -c tom -m jerry Total args passed to /script.pl : 4 Arg # 1 : -c Arg # 2 : tom Arg # 3 : -m Arg # 4 : jerry; print "Total args passed to $scriptname : $total\n"; # Use loop to print all args stored in an array called @ARGV foreach my $a(@ARGV) { print "Arg # $counter : $a\n"; $counter++; }
输出示例:
#!/usr/bin/perl -w if ($#ARGV != 2 ) { print "usage: mycal number1 op number2\neg: mycal 5 + 3 OR mycal 5 - 2\n"; exit; } $n1=$ARGV[0]; $op=$ARGV[1]; $n2=$ARGV[2]; $ans=0; if ( $op eq "+" ) { $ans = $n1 + $n2; } elsif ( $op eq "-"){ $ans = $n1 - $n2; } elsif ( $op eq "/"){ $ans = $n1 / $n2; } elsif ( $op eq "*"){ $ans = $n1 * $n2; } else { print "Error: op must be +, -, *, / only\n"; exit; } print "$ans\n";
更多例子
$ chmod +x mycal.pl $ ./mycal.pl $ ./mycal.pl 5 + 3 #### Note: * need to be escaped under UNIX shell ### $ ./mycal.pl 5 \* 3
保存并运行脚本,如下所示:
##代码##