My Perl Script以下面的方式检索参数。具有Getoptions函数来检索命令行参数。
./test.pl -mode report -writeid 12 13 23......
$rc=GetOptions( 'mode=s' => \$cmdParams{mode} ,'writeid:i{1,}' => \@writeid ,'h|?|help' => \$help );
问题是当我在writeid选项中有字母数字字符时,它没有失败。 Writeid定义为整数(i {1,}),它可以接收1到多个值。当我在第二个值中包含字母数字字符时,它不会失败。 ./test.pl-mode report -writeid 12 A3 23 ......
我能做的解决方法是什么?
答案 0 :(得分:2)
当您使用GetOptions函数时,我假设您正在使用GetOpts :: Long,选项规范中的“{1,}”一个或多个数量的问题是,一旦您成功匹配整数, 've'成功了“。如果您删除了定量规范并且只使用'writeid:i'=>运行\ @writeid,每个write_id都必须在命令行上以该标志开头,因此在解析失败时会出现错误状态。