无法使用Getopt :: Long中的GetOptions限制选项的参数数量

SVG*_*aju 0 perl arguments

我的计划如下:

   use strict;
   use warnings;

   use Getopt::Long;

   my @letters;
   my @words;

   GetOptions(
      "letters=s{2}" => \@letters,
      "words=s{,}" => \@words
   );

   print "Letters: " . join(", ", @letters) . "\n";
   print "Words: " . join(", ", @words) . "\n";
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,我得到如下输出:

   perl getopts.pl --letters a --words he she it
   Letters: a, --words
   Words:
Run Code Online (Sandbox Code Playgroud)

--words被读作为--letters参数本身的一部分.我期望GetOptions在这种情况下抛出错误消息.如何完成这项工作.

JRF*_*son 6

更改:

"letters=s{2}" => \@letters,
Run Code Online (Sandbox Code Playgroud)

至:

"letters=s{1,2}" => \@letters,
Run Code Online (Sandbox Code Playgroud)

...允许1到2个字母作为参数.