Perl GetOptions函数
我的Perl脚本按以下方式检索参数。使用Getoptions函数检索命令行参数Perl GetOptions函数,perl,perl-module,Perl,Perl Module,我的Perl脚本按以下方式检索参数。使用Getoptions函数检索命令行参数 ./test.pl -mode report -writeid 12 13 23...... 问题是当我在writeid选项中有字母数字字符时,它并没有失败。Writeid被定义为整数(i{1,}),它可以接收1到多个值。当第二个值中有字母数字字符时,它不会失败。 ./test.pl-模式报告-writeid 12 A3 23 我能做的变通方法是什么?当您使用GetOptions函数时,我假设您使用的是GetOp
./test.pl -mode report -writeid 12 13 23......
问题是当我在writeid选项中有字母数字字符时,它并没有失败。Writeid被定义为整数(i{1,}),它可以接收1到多个值。当第二个值中有字母数字字符时,它不会失败。
./test.pl-模式报告-writeid 12 A3 23
我能做的变通方法是什么?当您使用GetOptions函数时,我假设您使用的是GetOpts::Long,选项规范中的“{1,}”一个或多个数量的问题是,一旦您成功匹配一个整数,您就“成功”。如果您删除了quantitive spec,只是使用'writeid:i'=>\@writeid运行,那么每个write\u id前面都必须有命令行上的标志,因此在解析失败时会出现错误状态。对于初学者,您可以向我们展示您正在使用的来自CPAN的无数标准Getopt::*模块中的哪一个。最有可能的情况是,
12
是(唯一的)数字选项,将A3
和23
保留为非选项('filename')参数。非常感谢您提供的信息。我不想指定-writeid 1-writeid 2-writeid 3。我想写一本12233。我能做些什么来解决这个问题呢?也许让标志-was-w12-w13-w14更容易写?很抱歉,我无法提供更有用的内容,但如果不破解GetOpts模块,我看不出您还能做什么:(
$rc=GetOptions( 'mode=s' => \$cmdParams{mode}
,'writeid:i{1,}' => \@writeid
,'h|?|help' => \$help
);