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));