bycj.net
当前位置:首页 >> pErl sort vAluE >>

pErl sort vAluE

my %hash; my @keys=sort { $hash{$a} $hash{$b} } keys %hash; 这样就可以了,直接循环用下面的。 foreach my $key ( sort { $hash{$a} $hash{$b} } keys %hash) { }

[ol][*]use 5.014;[*]my %hash = ([*]? ? \'Jodan\' => \'1.98\',[*]? ? \'Wade\'??=> \'1.93\',[*]? ? \'James\' => \'2.08\',[*]? ? \'T_mac\' => \'2.03\',[*]? ? \'Yao\'? ?=> \'2.29\',[*]? ? \'Paul\'??=> \'1.83\',[*]? ? \'Kobe\'??=> \...

my @keys = sort { $h{$b} $h{$a} } keys %h; #sort the hash table 上面的那一行就是排序的代码。程序如下: #!/usr/perl/bin use strict; use Data::Dumper; my %h=( "Alex"=>24, "Sam"=>25, "Bob"=>30, "Andy"=>11, "Wills"=>35, "Mary"=>16,...

这属于perl的高级排序, {$a $b}相当于是子程序,相当于sub by_sort{if($a$b){1}else{0}},后面的数组是参数,每次传两个元素的参数,且反复调用该子程序,直到数组元素传完为止。

哈希按键值排序输出: perl -e '%h = ( 11.0 => "a" , 22.0 => "b" , 5 => "c" , 19 => "d" ) ;foreach $k ( sort{$a$b} (keys %h) ){ print "$k => $h{$k}\n";}'

先把文件每行split分开 然后做个哈希,以第三列为键,整行为值 接下来用perl里的sort函数排序哈希输出即可

首先, by_number 并没有读取过 @paixu, 而是 sort 赋值给了 $a 和 $b, 再调用 by_number 去解释 $a 和 $b. 所以, 如果你在 by_number 入面 print "@_", 你是会得到空值的. 也所以, 你写的 by_number 要跟著 sort 所给你的规范, 只能回传 -1 0 和...

如果你是linux环境的话,可以直接用sort命令进行排序 sort -k 2nr your_file.txt > res.txt 如果没有的话用下面的perl脚本也可以实现 注:这个代码的结果是输出在STDOUT上的 #!/usr/bin/env perl use strict;use warnings;my $file = "file.txt"...

当然了,如果从文件读以回车分界 dd cc aa @m=;sort(@m);....是可以的 用以空格分界 是这样写的@m=split(" ",chomp())

挺有意思的一个问题,以前还没注意过。我查了一下perldoc,有一段话: "sort() returns aliases into the original list, much as a for loop's index variable aliases the list elements. That is, modifying an element of a list returned b...

网站首页 | 网站地图
All rights reserved Powered by www.bycj.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com