假设我想输入两个命令行参数-- source和destination。GetOptions允许命令行只检查参数名的第一个字符,而不是完整的字符串。我如何验证完整的参数字符串,而不是只允许传递其子字符串?
下面是一个示例程序:
my ($source,$dest);
GetOptions(
'from=s' => \$source,
'to=s' => \$dest
) or die "Incorrect arguments\n";
它接受以下任何一项:
-from
-fro
-fr
-f
-to
-t
不过,我希望它只接受
-from
-to
并且如果传递了除这些完整字之外的任何内容,则失败。
如何禁用缩写选项?
2条答案
按热度按时间ssgvzors1#
默认情况下,启用缩写。禁用
auto_abbrev
。请参阅Getopt::Long:例如,当传递
-fro
时,它将终止,并显示以下消息:zpqajqem2#
请参阅文档中的“配置
Getopt::Long
“:auto_abbrev
允许选项名称缩写为唯一性。除非已设定环境变量
POSIXLY_CORRECT
,否则预设为启用,在此情况下,“auto_abbrev
“会停用。