是Perl的GetOpt :: Long接受交换机的缩写是一个错误吗?

And*_*ndy 4 perl getopt

这是我编写的用于测试命令行参数处理的简单脚本:

use Getopt::Long;

my $help = 0;

GetOptions(
'help|h|?' => \$help,
) or die "Error!";

print "OK\n";
Run Code Online (Sandbox Code Playgroud)

我得到的结果如下:

D:\>perl test.pl --help
OK

D:\>perl test.pl --hell
Unknown option: hell
Error! at test.pl line 10.

D:\>perl test.pl --he
OK

D:\>perl test.pl --hel
OK
Run Code Online (Sandbox Code Playgroud)

有没有人注意过这个?行为(接受他和hel而不是帮助)是一个潜在的错误吗?

dfa*_*dfa 13

这是一个记录在这里的功能


Pau*_*lin 8

不,这是故意的.它接受选项的最短非模糊版本,所以如果你有另一个选项"--hex",它将不接受"--he"但它会接受"--hel".


Mic*_*man 8

这是一个功能.只要结果不明确,选项可以缩写.如果您不想要此行为,可以通过配置禁用它.

如果这是一个错误的地方,检查以找出是否是一个已知一个是错误队列rt.cpan.org.