3

我想Getopt::Long::GetOptions用于获取脚本的命令行选项。

我有这样的要求:

perl script.pl -c <name1> -c <name2> -m <name3> argument

在这里,我们有选项标志-c-mm 是可选的,并且argument是强制性的。

谁能指出正确的用法GetOptions

4

2 回答 2

4

Getopt::Long文档中:

GetOptions未提供选项时不返回错误结果

这就是为什么它们被称为“选项”。

换句话说,如果您期望一个强制参数,您需要在GetOptions调用之外显式检查它。


如果参数是选项的一部分,@ARGV而不是选项的一部分,则用于表示选项--的结束。在下面的示例中,脚本将argument通过以下方式访问$ARGV[0]

perl script.pl -c <name1> -c <name2> -m <name3> -- argument
于 2013-05-23T09:03:42.297 回答
1

这是示例代码和结果。

https://gist.github.com/kyanny/5634832

如果您想了解有关如何处理多个值选项的更多信息,请参阅文档:http: //perldoc.perl.org/Getopt/Long.html#Options-with-multiple-values

还有一件事,Getopt::Long::GetOptions 没有提供处理强制选项的方法。您应该检查强制选项是否在@ARGV 中并在您手中引发异常等。

于 2013-05-23T09:28:58.043 回答