Perl has a logical xor operator but it happens to be at the very bottom of the precedence priority list , importantly below the humble comma. So this innocent looking piece of code:

foobar( $a xor $b, $c );

Is interpreted as:

foobar( $a xor <strong>($b, $c)</strong> );

And note unlike the not, and and or low-precedence logical operators,  there is no high-precedence xor operator. So it’s a good idea to wrap xors in parentheses to guarantee intended behaviour:

foobar( <strong>($a xor $b)</strong>, $c );