来自:http://www.perlfect.com/articles/sorting.shtml
perl 比较操作符列表:
Numbers | Strings |
---|---|
< | lt |
> | gt |
<= | le |
>= | ge |
== | eq |
<=> | cmp |
!= | ne |
<=> 和cmp的详细解释:
Relation of $a and $b | Value Returned by $a <=> |
$a greater than $b | 1 |
$a equal to $b | 0 |
$a less than $b | -1 |
如果你有未排序的 @not_sorted,想得到排序的@sorted:
@sorted = sort { $a <=> $b } @not_sorted # numerical sort
or
@sorted = sort { $a cmp $b } @not_sorted # ASCII-betical sort
or better
@sorted = sort { lc($a) cmp lc($b) } @not_sorted # alphabetical sort
Get a list of hash keys sorted by value.
@sorted = sort { $hash{$a} cmp $hash{$b} } keys %hash;
Get a reverse sort of a list.
@sorted = sort { $b cmp $a } @list;
Which can also be done with
@sorted = reverse sort { $a cmp $b } @list;
Get an alphabetical sort of words,but make 'aardvark' always come last.
(Now,why you would want to do that is another question...)@sorted = sort { if ($a eq 'aardvark') { return 1; } elsif ($b eq 'aardvark') { return -1; } else { return $a cmp $b; } } @words;
完!