这是一个天真的问题,我努力寻找一个优雅的解决方案。我编写perl脚本,随着它们的成熟,增加了传递给GetOptions的选项数量。脚本的重要选项,我作为POD文档添加在顶部,但我依赖于给其他选项提供有意义的名称,我不打算明确地记录它们。
我想以某种方式将GetOptions中的哈希值传递给perldoc
打印的内容,以便在那里列出未记录的选项。有选择吗?
答案 0 :(得分:5)
perldoc解析pod。您必须根据运行.pl获得的值编写脚本来修改.pl的pod。是的,这听起来不是一个好主意。
您可能对Getopt::Euclid,Docopt,Getopt::Auto或Getopt::AsDocumented感兴趣。这些采用相反的方法:您在文档中定义选项,并解析文档以确定如何处理命令行。
答案 1 :(得分:1)
我认为你的观点首先是代码,然后记录变得稳定的东西。当你需要编写两次文档和代码时,这是公平的。但现在情况并非如此。我对原型设计的推荐是编写联机帮助页并使用一个模块为您创建选项代码。
我在perl和python中最喜欢的是docopt(还有许多其他语言的实现)。在这里,您可以找到Perl Docopt
我在很长一段时间之前在stackoverflow中询问了perl implementatios for docopt,我被指向了docopt模块以及其他选项,例如Getopt::Euclid,Getopt::Auto和Getopt::AsDocumented < / p>
与您关于不增加cpan依赖关系的问题相关, 在python中,Docopt是自包含的,但我认为依赖于perl实现并不是这样 布尔, 类::访问器::精简版, 列表:: MoreUtils, 列表::的Util, 父母, 波德::用法 和 标量::的Util;和依赖的依赖....
如果perl Docopt实现不像原始Python那么小和自包含,那么可能是时候给它更广泛的用法并开始填充功能/实现请求,因为,恕我直言,doctopt做事的方式是众多的一个做事的方法。
最后,您将谈谈docopt的原因。它与python有关,但命令行界面逻辑和UX对于所有语言都是相同的:PyCon UK 2012: Create beautiful command-line interfaces with Python