On Sat, May 07, 2005 at 02:04:45AM +0200, Juerd wrote: : Juerd skribis 2005-05-07 1:23 (+0200): : > Perl 5's perlop says: "It cannot short circuit, of course." Can : > someone explain why it cannot? : : I was confused. It is entirely obvious why it can't.
On the other hand, one(...) semantics can short circuit false as soon as you find two trues, except that one(...) is not guaranteed to execute in any particular order, whereas I think xor and ^^ should be make list associative but execute left-to-right, short circuiting on the second true discovered, so you have some hope of ordering the harder conditions later in a sequence and bypassing them. In either case the one true value is returned. This seems to me to be the most useful semantics. Presumably one could also get ordered tests like this: $trueone = infix:<xor> map { $_ = '' unless /foo/ } =$fh; and return the one line in $fh that contains "foo", bombing out immediately if there are two such lines. (I'm assuming infix:<xor> can be called as a list operator there...) Parity XOR is fine for +^, ~^, and even ?^, of course. Larry