【问题标题】:Is there a perl module equivalent to python's optparse.OptionParser? [closed]是否有与 python 的 optparse.OptionParser 等效的 perl 模块? [关闭]
【发布时间】:2022-04-20 23:47:32
【问题描述】:

我有一个需要用 perl 编写的新脚本,以利用我们的 perl 代码库(不,我不能转换它,反正还不能)。我们的编码标准规定了Getopt::Long::GetOptions(),但我意识到如果我可以将 python 的 optparse.OptionParser 放入其中,我的选项处理将得到极大的改进和简化。我在 python 中喜欢的东西:验证输入,包括格式和必需/可选,以及基于参数配置的自动帮助字符串生成。

有什么建议吗?我知道我可以自己动手,但如果已经完成,我宁愿使用别人的工作。

【问题讨论】:

  • 想知道为什么要改进和简化现有代码库中的选项处理?
  • @ysth 好问题。这是现有代码库的新脚本——我把它扔在那里,以免人们要求我移植它。我的不清晰已被编辑。谢谢
  • 在这种情况下 App::Cmd 可能就在你的小巷里。

标签: perl optional-parameters


【解决方案1】:

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

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

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

【讨论】:

  • 是的,我已经使用了(编辑问题以反映这一点)。 OptParser 做了更多工作,包括验证和基于选项生成帮助文本。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    现在有:Getopt::optparse

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 我认为这个答案没有什么可以改进的。 OP 要求提供一个类似于 Python 模块的 Perl 模块,因此@mhearse 编写了一个,将其提交给 CPAN,并发布了链接。大功告成。
    • 自 OP 以来的新功能。单破折号和双破折号都可以选择。动作:追加和计数。最后,我很自豪能够添加回调。当前版本 1.2.0
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 2013-06-24
      • 2010-09-06
      • 2011-08-03
      相关资源
      最近更新 更多