你应该检查Getopt::Long::GetOptions的返回代码吗?

8
我刚刚在代码审查中被要求首次检查调用Getopt::Long Perl 模块的GetOptions() 函数的返回码。我不记得曾经看到过对GetOptions()函数的这种测试。
那么,人们通常为什么不会检查此函数的返回码呢?
1个回答

11

人们不检查 GetOptions 函数的返回值的原因之一是,他们想要处理未指定的选项而不使用 Getopt::Long (通过在调用GetOptions后直接解析 @ARGV)。 或者,他们只想忽略未指定的选项。 或者,他们可能没有意识到GetOptions函数可能会失败。

我总是检查返回值,因为我喜欢捕捉命令行中的拼写错误。 检查返回值的标准方法使用Pod::Usage Core 模块(请参见POD中的示例代码)。 另请参见:Dynamic Duo --或-- Holy Getopt::Long, Pod::UsageMan!


2
通常,当我想让程序在解析命令行参数时出错时“死亡”,我会检查GetOptions的返回值。例如:die unless GetOptions(...)。如果不是这样,pass_trough仍然是一个选项,可以捕获@ARGV中的其余参数。 - matthias krull
1
感谢@toolic提供非常有用的答案。我没有想到拼写错误的选项。并且非常感谢提供更多关于为什么应该在我的Perl中添加更多pod的文章链接! - Rob Wells

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接