Name
sort
Synopsis
sort [code] list
Sorts a list and returns
the sorted list value. By default (without a
code argument), it sorts in standard
string comparison order (undefined values sorting before defined
null strings, which sort before everything else).
code, if given, may be the name of a
subroutine or a code block (anonymous subroutine) that defines its
own comparison mechanism for sorting elements of
list. The routine must return to the
sort function an integer less
than, equal to, or greater than 0, depending on how the elements
of the list will be ordered. (The handy <=> and cmp operators can be used to perform
three-way numeric and string comparisons.)
The normal calling code for subroutines is bypassed, with
the following effects: the subroutine may not be a recursive
subroutine, and the two elements to be compared are passed into
the subroutine as $a and
$b, not via @_. The variables $a and $b are passed by reference, so don’t
modify them in the subroutine.
Do not declare $a and
$b as lexical variables (with
my). They are package globals
(though they’re exempt from the usual restrictions on globals when
you’re using use strict). However, you do need to make
sure your sort routine is in
the same package, or else you must qualify $a and $b with the package name of the
caller.
In versions preceding 5.005, Perl’s sort is implemented in terms of C’s
qsort(3) function. Some
qsort(3) versions will dump core if your sort subroutine provides inconsistent ordering of values. As of ...