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

时间:2012-06-28 11:28:20

标签: perl getopt-long

我正在使用Getopt::Long模块来处理命令行参数。

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

Option f is ambiguous (file, find).

我想知道我们怎样才能抑制这种模棱两可的用法?

提前致谢。

2 个答案:

答案 0 :(得分:10)

查看Getopt::Long文档:

  

<强> 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

答案 1 :(得分:3)

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

配置Getopt :: Long
use Getopt::Long qw(:config no_auto_abbrev) ;