我是一个Perl新手。我正在写一个只读一个参数的脚本。如果放入除指定参数之外的其他任何内容,它将调用一个使用函数。
当我使用getopt()时,脚本会输出任何内容。如果我使用getopts(),它会处理我的所有参数。我做错了什么?
use strict;
use warnings;
use Getopt::Std;
sub main
{
my %opts;
getopt('abcd', \%opts) or usage();
if($opts{c}) {
print "Got -c flag\n";
}
if($opts{a}) {
print "Got -a flag\n";
}
if($opts{b}) {
print "Got -b flag\n";
}
}
sub usage
{
printf("There is an error in your options, try %s", $0);
}
main();
答案 0 :(得分:3)
你没有做错任何事。您需要使用getopts()
,这样您才能获得所有指定的选项,如果存在多个选项,则会抛出错误:
getopts('abcd', \%opts) or usage();
usage() if scalar keys %opts != 1;