Getopt ::缺少长参数

问题描述 投票:1回答:2

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

脚本可以获取用于在一种文件类型上运行功能的-type,也可以获取标志-all以在所有文件类型上运行。

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

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

是否有避免这种情况的优雅方法?

perl getopt-long
2个回答
4
投票

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

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

2
投票

使用'type:s'代替'type=s',并且-type的值是可选的。优雅?我不知道,但它充满生命。

© www.soinside.com 2019 - 2024. All rights reserved.