in reply to When is a function call not a function call

To make it work I need to resort to:
print sort grep {1} uniq 0,0,1,2;

I know it's mentioned in the node that Roy Johnson linked to, but I think it bears repeating that you don't need to resort to such arcane chicanery. Simply adding parentheses does the trick:

print sort(uniq(0,0,1,2));

Replies are listed 'Best First'.
Re^2: When is a function call not a function call
by dpuu (Chaplain) on Mar 30, 2006 at 04:52 UTC
    That doesn't seem to work:
    % perl -we 'sub fn {print "$a$b\n"} print(sort(fn(0,0,1,2)))' Unquoted string "fn" may clash with future reserved word at -e line 1. 00 10 21 0012
    I can eliminate the warnings by choosing a function name that isn't all-lowercase but, as the output demonstrates, the function is still called as a comparator, not a modifier of the input list.

    Update: I was using perl 5.6.1. The parentheses trick works with 5.8.

    --Dave
    Opinions my own; statements of fact may be in error.

      It's good to know that 5.6.x is broken in this regard in case one of us is unlucky enough to be required to use a 5 year old perl distribution. :-)

      thanks