perl -MData::Dump=pp
@values=("true",undef);
for $A (@values) {
for $B (@values) {
pp [$A,$B], [ ($A xor $B), ( ($A && !$B) || ($B && !$A) ) ];
}
}
__END__
(["true", "true"], ["", ""])
(["true", undef], [1, 1])
([undef, "true"], [1, 1])
([undef, undef], ["", undef])
but if you apply De Morgan's law, you'll always get "default" Booleans:
perl -MData::Dump=pp
@values=("true",undef);
for $A (@values) {
for $B (@values) {
pp [$A,$B], [ ($A xor $B), !( ( !$A || $B) && (!$B || $A) ) ];
}
}
__END__
(["true", "true"], ["", ""])
(["true", undef], [1, 1])
([undef, "true"], [1, 1])
([undef, undef], ["", ""])
|