编写Perl程序实现双序列比对的,要用顺序比对算法
展开全部
咯,确实没懂,不过用perl排序还是比较容易的。如下:
如三行三列数据分别为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";
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询