-a
orの 1 つだけが定義されている-b
かどうかを確認する方法は?-c
だから一緒-a -b
に、も-a -c
、も-b -c
、も-a -b -c
。
今持っている
use strict;
use warnings;
use Carp;
use Getopt::Std;
our($opt_a, $opt_b, $opt_c);
getopts("abc");
croak("Options -a -b -c are mutually exclusive")
if ( is_here_multiple($opt_a, $opt_c, $opt_c) );
sub is_here_multiple {
my $x = 0;
foreach my $arg (@_) { $x++ if (defined($arg) || $arg); }
return $x > 1 ? 1 : 0;
}
上記は機能していますが、あまりエレガントではありません。
すでに同様の質問がありますが、 2 つの排他的な値をチェックするのは簡単なので、これは異なりますが、ここでは複数の値があります。