【发布时间】:2012-07-17 16:07:52
【问题描述】:
我刚刚在代码审查中第一次被要求检查调用 Getopt::Long Perl 模块的 GetOptions() 函数的返回码。
我不记得曾经见过这样的GetOptions() 函数测试。
那么人们一般不检查这个函数的返回码有什么具体原因吗?
【问题讨论】:
标签: perl getopt getopt-long
我刚刚在代码审查中第一次被要求检查调用 Getopt::Long Perl 模块的 GetOptions() 函数的返回码。
我不记得曾经见过这样的GetOptions() 函数测试。
那么人们一般不检查这个函数的返回码有什么具体原因吗?
【问题讨论】:
标签: perl getopt getopt-long
人们不检查GetOptions 函数的返回值的一个原因是他们希望在不使用Getopt::Long 的情况下处理未指定的选项(通过在调用GetOptions 之后直接解析@ARGV)。或者,也许他们只是想忽略未指定的选项。或者,他们可能不知道GetOptions 函数可能会失败。
我总是检查返回值,因为我喜欢在命令行中发现拼写错误。检查的标准方法是使用Pod::Usage Core 模块(参见 POD 示例代码)。另见:The Dynamic Duo --or-- Holy Getopt::Long, Pod::UsageMan!
【讨论】:
die在解析命令行参数时出错,我通常会检查GetOptions的返回值。喜欢die unless GetOptions(...)。如果不是 pass_trough 仍然是捕获 @ARGV 中其余参数的选项。