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) { }

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

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

哈希按键值排序输出: 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";}'

如果你是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())

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

挺有意思的一个问题,以前还没注意过。我查了一下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...

@a=qw(1 3 2 8 7 5 4 10 9); @a=sort {$a$b}@a; print "the max number=$a[0]\nthe min number=$a[$#a]\n";

@a = qw /hehe haha zz 123 456 && hehe/; $count{$_}++ foreach @a ; foreach $word (sort keys %count){ #--这里如果你遍历数组那么还是会输出重复,遍历hash就只有唯一的key print "$word has been appreared $count{$word} times! \n" }

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