【问题标题】:Getopt::Long missing parametersGetopt::长期缺少参数
【发布时间】:2012-07-01 13:01:18
【问题描述】:

我编写了一个需要从用户那里获取少量参数的脚本,但在尝试读取我的脚本参数时遇到了问题。

脚本可以获取-type 以在一种文件类型上运行函数,或者可以获取标志-all 以在所有文件类型上运行。

my $opt = GetOptions (
    'help|h' => \$help,
    'type=s' => \$type,
    'all'    => \$all,
);

我试图考虑用户可以运行的所有错误选项,发现当用户运行myscript.pl -type -all 时,模块将-all 读取为-type 字符串。

有什么优雅的方法可以避免这种事情吗?

【问题讨论】:

    标签: perl getopt-long


    【解决方案1】:

    允许-type-all,但不能同时允许。或者,删除-all 选项,如果-type 后跟all,则将其视为您现在尝试处理-all

    my $opt = GetOptions (
        'help|h' => \$help,
        'type=s' => \$type,
        'all'    => sub { $type = "all"; },
    );
    

    【讨论】:

    • 这正是我所做的。我只是想在 GetOpt::Long 中是否有针对此类问题的内置解决方案。
    • @user1494264 不是真的。无论如何,用-all 指定-type 的逻辑是什么?
    • @user1494264,“内置”解决方案(好像回调不是内置的???)如何更简洁?
    【解决方案2】:

    使用'type:s' 代替'type=s' 并且-type 的值是可选的。优雅的?我不知道,但它已经腐烂了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2012-05-08
      相关资源
      最近更新 更多