http://qs321.pair.com?node_id=744515


in reply to Inconsistent for the sake of convenience

My favorite (or least favorite) is when Perl tries to be a functional language and treat the name of a function as a first-order value. In normal circumstances, if foo is a function name, and it's followed by a comma, the meaning is to call foo with no args and return the result. For example:
print lc, $/; ## ^^ ## call lc with no args, return the result:
But in places like map EXPR and grep EXPR, it can mean something very different. This is especially bizarre when foo is a built-in that modifies $_ when it is called with no args:
map chop, @items; ## ^^^^ ## calls map with first argument = sub{ chop; } ## doesn't change current value of $_ anyotherfunc chop, @items; ## ^^^^ ## calls anyotherfunc with first argument = result of chop($_) ## changes current value of $_ !!

blokhead