Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl GetOptions函数_Perl_Perl Module - Fatal编程技术网

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

我的Perl脚本按以下方式检索参数。使用Getoptions函数检索命令行参数

./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
          );