perl 中m行n列的列表按任一列排序怎么做啊? 15
展开全部
楼上正解。
如三行三列数据分别为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";
}
如三行三列数据分别为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";
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询