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

保存并运行脚本,如下所示:

##代码##