我的计划如下:
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在这种情况下抛出错误消息.如何完成这项工作.
更改:
"letters=s{2}" => \@letters,
Run Code Online (Sandbox Code Playgroud)
至:
"letters=s{1,2}" => \@letters,
Run Code Online (Sandbox Code Playgroud)
...允许1到2个字母作为参数.