使用Perl';s Getopt::Long,如何防止模块尝试匹配不明确的选项名称?

使用Perl';s Getopt::Long,如何防止模块尝试匹配不明确的选项名称?,perl,getopt-long,Perl,Getopt Long,我正在使用该模块处理命令行参数 这个模块的典型行为是我们可以传递-f,而不是变量--file的全名。同时,如果我有另一个命令行变量--find,并且如果我在命令提示符下只提供-f,它将返回一个错误: Option f is ambiguous (file, find). 我想知道我们怎样才能制止这种模棱两可的用法 提前感谢。如果要关闭此自动缩写功能,必须使用 use Getopt::Long qw(:config no_auto_abbrev) ; 请查看文档: auto_abbrev 允许

我正在使用该模块处理命令行参数

这个模块的典型行为是我们可以传递
-f
,而不是变量
--file
的全名。同时,如果我有另一个命令行变量
--find
,并且如果我在命令提示符下只提供
-f
,它将返回一个错误:

Option f is ambiguous (file, find).
我想知道我们怎样才能制止这种模棱两可的用法


提前感谢。

如果要关闭此自动缩写功能,必须使用

use Getopt::Long qw(:config no_auto_abbrev) ;
请查看文档:

auto_abbrev

允许选项名称缩写为唯一性。默认值已启用 除非已设置环境变量POSIXLY_CORRECT,否则 case 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

@向下投票人:这个问题很有用,也很清楚。谢谢你的更正Zaid。向上投票人:这个问题可以通过阅读文档来回答。谢谢。正是我想要的。