in reply to Perversity of sorts
I am going to take a guess that given sort do_nothing(@in), do_nothing is being parsed as the name of the sort sub, and the (@in) is being parsed as the list to sort on. That's what it appears to be doing from the Deparse output, anyway.
Update: maybe not. this code does the same thing, and it doesn't use a named sub at all:
print sort sub { print "Args: @_\n"; @_ }->(qw(one two three))
Another update: using a named sub, it acts differently than the anonymous sub, though it returns the same thing and the anonymous sub gets sorted, but this one doesn't:
sub byfoo { print "Args: $a $b\n"; @_ } print sort byfoo(qw(one two three));
So perhaps my initial guess was correct, and I got tricked by the anonymous sub. I eagerly await a response from someone who can explain this! :-)
Final update: Ah, Tanktalus' post cleared it all up for me. How silly that I had forgotten sort can take a list and use the default comparison function! That explains why my anonymous coderef gets all the values at once, and they subsequently get sorted.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Perversity of sorts
by tlm (Prior) on Apr 01, 2005 at 01:55 UTC |