6
我有一个脚本,可以使用Getopt::Long
获得数十个参数/标志。 某些标志不允许混用,如:--linux --unix
不允许一起提供。现在我知道我可以使用if
声明进行检查,但我确信有更清晰和更好的方法来做到这一点。避免混合使用某些参数到脚本
if
如果我不想允许多个标志组合,块可能会变得很难看。
有什么建议吗?
感谢,
我有一个脚本,可以使用Getopt::Long
获得数十个参数/标志。 某些标志不允许混用,如:--linux --unix
不允许一起提供。现在我知道我可以使用if
声明进行检查,但我确信有更清晰和更好的方法来做到这一点。避免混合使用某些参数到脚本
if
如果我不想允许多个标志组合,块可能会变得很难看。
有什么建议吗?
感谢,
它似乎并不认为Getopt::Long具有这样的功能,并没有什么快速search of CPAN后伸出。但是,如果你可以使用哈希来存储你的选择,创建自己的功能似乎并不太难看:
use warnings;
use strict;
use Getopt::Long;
my %opts;
GetOptions(\%opts, qw(
linux
unix
help
)) or die;
mutex(qw(linux unix));
sub mutex {
my @args = @_;
my $cnt = 0;
for (@args) {
$cnt++ if exists $opts{$_};
die "Error: these options are mutually exclusive: @args" if $cnt > 1;
}
}
这也扩展到超过2种选择:
mutex(qw(linux unix windoze));