sort函数
sort LIST
sort BLOCK LIST
sort SUBNAME LIST
sort的用法有如上3种形式。它对LIST进行排序,并返回排序后的列表。假如忽略了SUBNAME或BLOCK,sort按标准字串比较顺序来进行(例如ASCII顺序)。如果指定了SUBNAME,它实际上是个子函数的名字,该子函数对比2个列表元素,并返回一个小于,等于,或大于0的整数,这依赖于元素以何种顺序来sort(升序,恒等,或降序)。也可提供一个BLOCK作为匿名子函数来代替SUBNAME,效果是一样的。
sort LIST
sort BLOCK LIST
sort SUBNAME LIST
sort的用法有如上3种形式。它对LIST进行排序,并返回排序后的列表。假如忽略了SUBNAME或BLOCK,sort按标准字串比较顺序来进行(例如ASCII顺序)。如果指定了SUBNAME,它实际上是个子函数的名字,该子函数对比2个列表元素,并返回一个小于,等于,或大于0的整数,这依赖于元素以何种顺序来sort(升序,恒等,或降序)。也可提供一个BLOCK作为匿名子函数来代替SUBNAME,效果是一样的。
被比较的2个元素,会被临时赋值给变量$a和$b。它们以引用传递,所以不要修改$a或$b。假如使用子函数,它不能是递归函数。
如果key按照ASCII排序的话
foreach my $item (sort {$a cmp $b} keys %hash){
print "$item == > $hash{$item}","/n";
}
如果key按照ASCII逆排序的话,以上代码将 $a 和 $b 互换。
如果value按照ASCII排序的话
foreach my $item (sort { $hash{$a} cmp $hash{$b} } keys %hash ){
print "$item == > $hash{$item}","/n";
}
如果将value按照ASCII逆排序的话,以上代码将 $hash{$a} 和 $hash{$b} 互换。
如果按照数字排序的话,代码和以上类似,只是将 cmp 换成符号 <=> 。以key按照数字由小到大为例:
foreach my $item (sort {$a <=> $b} keys %hash){
print "$item == > $hash{$item}","/n";
}