关于perl hash输出排序问题
sort函数
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){ 如果key按照ASCII逆排序的话,以上代码将 $a 和 $b 互换。 如果value按照ASCII排序的话 foreach my $item (sort { $hash{$a} cmp $hash{$b} } keys %hash?){ 如果将value按照ASCII逆排序的话,以上代码将 $hash{$a} 和 $hash{$b} 互换。 如果按照数字排序的话,代码和以上类似,只是将 cmp 换成符号 <=> 。以key按照数字由小到大为例: foreach my $item (sort {$a <=> $b} keys %hash){ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |