我想更改一个执行循环的perl脚本,我希望通过命令行选项传递循环数。程序现在接收一些选项,然后我需要更改它以接收新参数,但这是我第一次看到perl脚本,然后我不知道如何更改。 程序的开始(解析命令行选项)是:
if ($#ARGV >= 1) {
for ($i = 1; $i <= $#ARGV; $i++) {
if ($ARGV[$i] =~ /^\-/) {
if ($ARGV[$i] =~ /\-test/) {
//do something
}
} else {
//do something other
}
}
}
我认为我必须提出类似的内容:
if ($ARGV[$i] =~ /^\-L40/)
但它只匹配到40,我不知道如何解析附加到-L参数的数字以用于循环限制。
如果有任何类似的问题,请提前致谢并对不起,但我找不到。
答案 0 :(得分:4)
use Getopt::Long qw( );
sub usage {
print(STDERR "usage: prog [--test] [-L NUM]\n");
exit(1);
}
GetOptions(
'test' => \my $opt_test,
'L=i' => \my $opt_L,
)
or usage();
die("-L must be followed by a positive integer\n")
if defined($opt_L) && $opt_L < 1;
答案 1 :(得分:1)
类似的东西:
my $loopLimit = 1; # default
if ($#ARGV >= 1)
{
for ($i = 1; $i <= $#ARGV; $i++)
{
if ($ARGV[$i] =~ /^\-/)
{
if ($ARGV[$i] =~ /\-test/)
{
# do something
}
elsif ($ARGV[$i] =~ /\-L(\d+)/) # -L followed by digits
{
$loopLimit = $1;
}
}
else
{
# do something other
}
}
}