GetOpt Long处理类似的输入名称

时间:2016-06-16 15:50:30

标签: perl

我正在运行一个带有很多输入选项的perl脚本,其中一个是:

        'errorcode=s{1,}'  => \@ecodes,

如果输入的内容与输入不匹配,我会在GetOptions的末尾有一个骰子。但是,如果我输入'--ecode 500',程序就会运行。

为什么剧本不会死?如果我尝试其他类似' - 测试123'那么它会死掉。

1 个答案:

答案 0 :(得分:1)

我猜你有一个必要的参数选项,如

"foo=s" => \$foo,

你做了类似

的事情
program --foo --ecode 500

--ecode放入$foo,将500放入@ARGV

$ perl -MGetopt::Long -e'
   use feature qw( say );
   GetOptions("foo=s" => \$foo)
      or die "usage\n";
   say "ok <$foo> <@ARGV>";
' -- \
   --ecode 500
Unknown option: ecode
usage

$ perl -MGetopt::Long -e'
   use feature qw( say );
   GetOptions("foo=s" => \$foo)
      or die "usage\n";
   say "ok <$foo> <@ARGV>";
' -- \
   --foo --ecode 500
ok <--ecode> <500>