and and or return the last expression evaluated; xor always evaluates both sides and then returns the exclusive or of those two expressions (not either of the surrounding expressions) so it's always going to be a boolean value either 1 or ''/0. See perlop
Update: On further reflection I think I see what your expectations for the behavior might be based on and/or's behavior: if A xor B is true return whichever of A or B was true, otherwise return false.
The cake is a lie.
The cake is a lie.
The cake is a lie.
In reply to Re^3: 'xor' operator is not a sibling to 'or' and 'and'?
by Fletch
in thread 'xor' operator is not a sibling to 'or' and 'and'?
by rsFalse
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |