我想限制用户输入(通过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)
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能简单地确保用户只设置了三个变量中的一个?
使用 计算真值的数量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) {
...;
Run Code Online (Sandbox Code Playgroud)