2

I have a new script that I need to write in perl, to leverage our perl codebase (no, I can't convert it, not yet anyway). Our coding standards dictate Getopt::Long::GetOptions() but I realize my option handling would be greatly improved and simplified if I could just drop python's optparse.OptionParser into it. The things I like in python: validation of inputs, both formats and required/optional, and auto help string generation based on argument config.

Any tips? I know I could roll my own, but I'd rather use someone else's work if it's already been done.

4

3 回答 3

6

规范工具是Getopt::Long。它不是“声明性的”。您是否正在尝试复制某些特定行为?

编辑:要获得更多功能,您可能对App::Cmd或其中的一部分感兴趣(另请参见App::Cmd::Tutorial)。

这在内部使用Getopt::Long::Descriptive似乎可以满足您的大部分要求。这可能对您特别有用,因为它在内部使用Getopt::LongParams::Validate,因此移动您当前的代码库可能非常容易,但现在有了验证。

于 2013-01-18T16:54:27.727 回答
4

CPAN 上的GetOpt命名空间中有很多选项。

GetOpt::StdGetOpt::Long都是核心模块。

于 2013-01-18T16:55:29.670 回答
1

MooseX::GetoptMooX::Options是……选项。两者的工作方式相似,并且都在后台使用 Getopt::Long::Descriptive,将其与类集成以提供高级验证和默认设置以及帮助文本。然后,您只需使用new_with_options构造函数,即可获得该类的一个实例,该实例的所有插槽都从命令行填充。

于 2013-01-18T18:36:15.613 回答