http://www.perlmonks.org?node_id=943989


in reply to Re^2: Sort command equivalent in perl
in thread Sort command equivalent in perl

You're right. it wouldn't work for files greater than memory.

I thought it might for a while because of the in-place sort optimisation that came in somewhere in 5.8.x, that means that:

@ar = sort @r;

gets converted to sort \@ar; and sorts in place rather then copies the array to the stack and back.

But looking at the code, it doesn't work for tied arrays:

/* optimiser converts "@a = sort @a" to "sort \@a"; * in case of tied @a, pessimise: push (@a) onto stack, then assig +n * result back to @a at the end of this function */

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

The start of some sanity?

Replies are listed 'Best First'.
Re^4: Sort command equivalent in perl
by davido (Cardinal) on Dec 16, 2011 at 17:25 UTC

    Yup, there's the gotcha that gotme. :) I remembered that @array = sort @array doesn't make a copy, but failed to think through the fact that tie would be different.


    Dave