我很难找到解释此行为的Perl GetOptions参考.
如果我调用GetOptions两次,那么第二次调用它时,它无法解析命令行参数,并且它们都返回undefined.第一次调用GetOptions(顺便说一下,失败并返回0)是否吃了命令行参数,或者第二次调用是否只是决定不打扰解析,因为它记得先前已经失败了?
不要问我为什么两次调用GetOptions - 这是因为代码重构很复杂,除非必要,否则我不愿意.我只想要一个简单的方法,在对GetOptions的"真正"调用之前,测试是否存在单个命令行参数.谢谢.
GetOptions 消耗和修改的@ARGV阵列.在调用该函数之后,通常留在该数组中的所有内容都是文件名参数.
如果您没有存储数组的副本以便以后可以重置,那么后续GetOptions调用将无需解析任何内容.您可以尝试GetOptionsFromArray使用任意数组调用,而不是使用隐式数组@ARGV.
GetOptions从中删除选项@ARGV,只留下实际参数,以便程序的其余部分在处理时不必知道选项@ARGV.我没有在文档中明确提到这一点,但它是选项解析器通常如何工作的方式.
这确实意味着第二次调用它将是非常无用的,除非你有一些复杂的模式用于这样的选项:--section1-opt1 --section1-opt2 -- --section2-opt1 --section1-opt2 -- <real arguments>.第一个调用将在第一个终止时占用,第二个调用将--解析下一个部分直到第二个--.但我无法想象它是最友好的接口.
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |