这是我编写的用于测试命令行参数处理的简单脚本:
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而不是帮助)是一个潜在的错误吗?
答案 0 :(得分:13)
这是记录here
的功能答案 1 :(得分:8)
不,这是故意的。它接受该选项的最短非模糊版本,所以如果你有另一个选项“--hex”,它就不会接受“--he”但它会接受“--hel”。
答案 2 :(得分:8)
这是feature。只要结果不明确,选项可以缩写。如果您不想要此行为,则可以通过configuration禁用它。
如果这是一个错误,检查以确定它是否是已知错误的地方是bug queue rt.cpan.org。