perl的排序和比较

来自:http://www.perlfect.com/articles/sorting.shtml

 

perl 比较操作符列表: 

NumbersStrings
< lt
> gt
<= le
>= ge
== eq
<=> cmp
!= ne

 

<=> 和cmp的详细解释: 

Relation of $a and $bValue Returned by $a <=>
$a greater than $b1
$a equal to $b0
$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...)(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;

 

完! 

posted @ 2012-12-17 17:46  iTech  阅读(1510)  评论(0编辑  收藏  举报