The sort pragma allows you to control sort() behavior. In Perl 5.6 and earlier, the default sort() behavior was written with quicksort. Perl 5.8, with which sort.pm is shipped in the source kit, implements mergesort. mergesort guarantees the worst-case behavior of O(N log N), where quicksort guarantees O(N ** 2).
Perl 5.8 and later shuffle large arrays before sorting. Note that sort.pm is global and not lexical in scope.
For example:
#!/usr/local/bin/perl -w use sort '_quicksort'; # Or _qsort, if you'd like sort(@something);
mergesort is better than quicksort for several reasons. First, mergesort is more stable and does fewer comparisons than quicksort, so it's better for more complicated sorting routines. In addition, mergesort takes preexisting order into account.
Copyright © 2002 O'Reilly & Associates. All rights reserved.