in reply to Re: Perversity of sorts
in thread 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.
Yes, that's exactly what Deparse shows, and that's my point: why is perl behaving this way. Perhaps the following variant makes the point more forcibly. I have redefined do_nothing to behave like a typical sort sub; the output now is sorted, but note that the sort sub (do_nothing) is being put to work with the syntax do_nothing( @in ):
use strict; sub do_nothing { $a cmp $b } my @in = qw( e n i g m a ); my @out = sort do_nothing( @in ); print "@out\n"; __END__ % perl enigma.pl a e g i m n
the lowliest monk
|
|---|