我想限制用户输入(通过GetOpt :: Long)只有一个值,可能有三个值。值为'pc-number','ip-address'和'surname'。
当有两个值时,我正在执行以下操作:
if ((!$pc_number and !$address) or ($pc_number and $address)) {
pod2usage("You must supply pc_number OR ip_address.");
exit;
} elsif ($pc_number) {
(do stuff)
}
如何确保用户只设置三个变量中的一个?
答案 0 :(得分:4)
使用grep
计算真值的数量。如果合适,还可以检查defined
:
if ( 1 != grep {$_} ( $pc_number, $address, $surname ) ) {
pod2usage "You must supply one and only one parameter: pc_number, ip_address, surname.";
exit;
} elsif ($pc_number) {
...;
答案 1 :(得分:2)
这似乎是这样做的:
if (($x xor $y xor $z) and not $x && $y && $z) {
... # one (and only one) is true
}
...虽然我不确定这是你想要在代码中遇到的那种你必须要维护的东西。