4

这是我为测试命令行参数处理而编写的一个简单脚本:

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

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

4

3 回答 3

13

这是此处记录的功能

于 2009-05-28T14:26:13.783 回答
8

不,是故意的。它接受选项的最短非歧义版本,因此如果您有另一个选项“--hex”,它不会接受“--he”,但会接受“--hel”。

于 2009-05-28T14:26:31.257 回答
8

这是一个特点。只要结果不模棱两可,选项可以被缩写。如果您不想要这种行为,可以通过配置禁用它。

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

于 2009-05-28T15:18:09.093 回答