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

时间:2009-05-28 14:22:53

标签: perl getopt

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

use Getopt::Long;

my $help = 0;

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

print "OK\n";

我得到的结果如下:

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

之前有人注意到了吗?行为(接受他和hel而不是帮助)是一个潜在的错误吗?

3 个答案:

答案 0 :(得分:13)

这是记录here

的功能

答案 1 :(得分:8)

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

答案 2 :(得分:8)

这是feature。只要结果不明确,选项可以缩写。如果您不想要此行为,则可以通过configuration禁用它。

如果这是一个错误,检查以确定它是否是已知错误的地方是bug queue rt.cpan.org