我正在使用该Getopt::Long
模块来处理命令行参数。
这个模块的典型行为是我们可以传递-f
变量的全名而不是全名--file
。同时,如果我有另一个命令行变量--find
,并且仅-f
在命令提示符处提供,它将返回错误:
Option f is ambiguous (file, find).
我想知道我们如何才能遏制这种模棱两可的用法?
提前致谢。
我正在使用该Getopt::Long
模块来处理命令行参数。
这个模块的典型行为是我们可以传递-f
变量的全名而不是全名--file
。同时,如果我有另一个命令行变量--find
,并且仅-f
在命令提示符处提供,它将返回错误:
Option f is ambiguous (file, find).
我想知道我们如何才能遏制这种模棱两可的用法?
提前致谢。
看看Getopt::Long
文档:
自动缩写
允许将选项名称缩写为唯一性。除非设置了环境变量 POSIXLY_CORRECT,否则默认启用,在这种情况下 auto_abbrev 被禁用。
例子:
use strict;
use warnings;
use Getopt::Long qw(:config no_auto_abbrev);
my ( $file, $fish );
GetOptions( "file=s" => \$file, "fish=s" => \$fish );
和测试:
$ perl test.pl -fi 24
Unknown option: fi
$ perl test.pl -fis 24
Unknown option: fis
如果你想关闭这个自动缩写功能,你必须配置 Getopt::Long 使用
use Getopt::Long qw(:config no_auto_abbrev) ;