Perl 的 GetOpt::Long 接受开关缩写是一个错误吗?
这是我编写的一个简单脚本,用于测试命令行参数处理:
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
以前有人注意到这一点吗? 这种行为(接受 he 和 hel 而不是 help)是否是一个潜在的错误?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是此处记录的功能
it is a feature documented here
不,这是故意的。 它接受选项的最短无歧义版本,因此如果您有另一个选项“--hex”,它不会接受“--he”,但会接受“--hel”。
No, it's intentional. It accepts the shortest non-ambiguious version of the option, so if you had another option "--hex", it wouldn't accept "--he" but it would accept "--hel".
这是一个功能。 只要结果不含糊,选项就可以缩写。 如果您不希望出现此行为,可以通过 配置。
如果这是一个错误,则检查其是否为已知错误的位置是 rt.cpan.org 上的长“rel="nofollow noreferrer">错误队列。
This is a feature. Options may be abbreviated as long as the result is not ambiguous. If you don't want this behavior it is possible to disable it via configuration.
If this were a bug, the place to check to find out whether or not it was a known one is the bug queue at rt.cpan.org.