0
我有如下的数据和Perl代码。我试图在每个标题(> dna1,> dna2)下找到最大分数(最后一列)的字母组合并打印出来。我在Perl写的代码如下:如何在每个标题下打印最大值的结果?
use strict;
use warnings;
my ($line);
my $max = 0;
my @prediction;
foreach my $line (<DATA>) {
chomp($line);
if ($line =~ /^>/) {
print "$line";
}
else {
my @split = split(/\s+/,$line);
my $score = pop @split;
if ($max < $score) {
$max = $score;
@prediction = @split;
push @prediction, $max;
}
#print "$domain\n";
}
print "@prediction\n";
}
__DATA__
>dna1
D 124.6
D T 137.5
G -3.4
G T 9.5
T 12.9
>dna2
A 196.3
A K 186.5
A K H 192.7
A H M 206.2
A M 200
输出是
>dna1
D 124.6
D T 137.5
D T 137.5
D T 137.5
D T 137.5
>dna2D T 137.5
A 196.3
A 196.3
A 196.3
A H M 206.2
A H M 206.2
能否请你帮我找出我如何能得到的输出只是最高分最终组合如下:
>dna1
D T 137.5
>dna2
A H M 206.2
谢谢!
将$ line改为$ _是向后退步IMO – ysth 2014-09-22 22:09:51
是的,它工作的很好。非常感谢! – 2014-09-22 22:10:17
@LingZhang你知道它是如何工作的吗?为什么你的代码不工作?如果不是,可能choroba可以添加一个解释。 – 2014-09-22 22:10:41