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
保存并运行脚本,如下所示:
##代码##
