I was just playing around with junctions a bit today, and I
noticed that if you weren't religious about using parenthesis
with them you could get quietly tripped up:
say so any() eq any(); # True (as expected)
say so any() eq any(); # False (as expected)
say so any eq any ; #
The "any" function is just like any other function taking an arbitrary list of
arguments (including user-defined functions). As such it parses with lower
precedence than comparison operators -- so "eq" binds more tightly than "any".
Thus
say so any eq any ;
parses like
say(so(any( eq