perl 中m行n列的列表按任一列排序怎么做啊? 15

 我来答
fly_height
2011-06-14 · 超过38用户采纳过TA的回答
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:69.9万
展开全部
楼上正解。
如三行三列数据分别为id name age:
1 wang 20
2 zeng 21
3 cheng 18
比如数据的文件名为t1.txt可以进行如下操作:
open (FH ,"t1.txt") or die print "error $!" ;
my @all= <FH>;
my @alldata;
foreach(0..$#all)
{
my @row = split " " , $all[$_];
my %rowdata;
$rowdata{"id"} = $row[0];
$rowdata{"name"} = $row[1] ;
$rowdata{"age"} = $row[2] ;
$alldata[$_] = \%r;
}
@alldata = {$rowdata{$a}<=>$rowdata{$b}}@alldata; #然后对得到哈希数组进行排序:
#然后输出:
foreach(@alldata )
{
print $_->{"id"},"\t",$_->{"name"},"\t",$_->{"age"},"\n";
}
#===================
#或者参考下面.
my @line;
while(<>)
{
chomp;
push @line, [ split ];
}
foreach ( sort { $a->[0] <=> $b->[0] or $a->[1] <=> $b->[1] or $a->[2] <=> $b->[2] } @line)
{
print @$_, "\n";
}
ace_fei
2011-06-08 · TA获得超过2013个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:717万
展开全部
先用split分割出你要排列的那一列数据,并保存为哈希表的key值,该哈希表的value值保存的是该key值所在行的内容。
然后对key值排序。
最后将value值输出。
over
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式