我有这部分代码来捕获沉浸在Hash中的数组的更大价值。当Perl识别出@slice数组删除数组的最大值时:
if ( max(map $_->[1], @$val)){
my @slice = (@$val[1]);
my @ignored = @slice;
delete(@$val[1]);
print "$key\t @ignored\n";
warn Dumper \@slice;
}
数据:倾销:
$VAR1 = [
[
'3420',
'3446',
'13',
'39',
55
]
];
我想将标签(\ t)分隔的信息打印在一行中,如下所示:
miRNA127 dvex589433 - 131 154
miRNA154 dvex546562 + 232 259
miRNA154 dvex573491 + 297 324
miRNA154 dvex648254 + 147 172
miRNA154 dvex648254 + 287 272
miRNA32 dvex320240 - 61 83
miRNA32 dvex623745 - 141 163
miRNA79 dvex219016 + ARRAY(0x100840378)
但是在最后一行总是得到这个结果。
我怎样才能生成此输出?:
miRNA127 dvex589433 - 131 154
miRNA154 dvex546562 + 232 259
miRNA154 dvex573491 + 297 324
miRNA154 dvex648254 + 147 172
miRNA154 dvex648254 + 287 272
miRNA32 dvex320240 - 61 83
miRNA32 dvex623745 - 141 163
miRNA79 dvex219016 + 3420 3446
补充说明: 在这种情况下,我希望在$ VAR-> [1]中捕获最高值,并查看$ VAR-> [0]中最小值的减法是否<=到55.如果不是,我需要消除此AoA(最高值)并用它填充@ignored数组。接下来,我想打印@ignored的一些值,就像列表一样。接下来,结果AoA,我想迭代最后一个流......
答案 0 :(得分:2)
print "$key\t $ignored[0]->[0]\t$ignored[0]->[1]";
您有一个数组数组,因此@ignored
的每个元素都是一个数组。符号$ignored[0]
到达第0个元素(这是一个数组),->[0]
和->[1]
检索该数组的第0和第1个元素。
例如:
use strict;
use warnings;
use Data::Dumper;
my @ignored;
$ignored[0] = [ '3420', '3446', '13', '39', 55 ];
my $key = 'miRNA79 dvex219016 +';
print Dumper \@ignored;
print "\n";
print "$key\t$ignored[0]->[0]\t$ignored[0]->[1]";
输出:
$VAR1 = [
[
'3420',
'3446',
'13',
'39',
55
]
];
miRNA79 dvex219016 + 3420 3446
生成相同输出的另一个选项是join
所有带\t
的值:
print join "\t", $key, @{ $ignored[0] }[ 0, 1 ];