我有这部分代码来捕获沉浸在哈希中的数组的较大值。当Perl识别出最大值时,数组将被@slice array:删除
if ( max(map $_->[1], @$val)){
my @slice = (@$val[1]);
my @ignored = @slice;
delete(@$val[1]);
print "$keyt @ignoredn";
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(最高值),并用它填充一个@gnored数组。接下来,我想打印一些@gnored的值,比如列表。接下来,使用结果AoA,我想迭代最后一个流。。。
print "$keyt $ignored[0]->[0]t$ignored[0]->[1]";
您有一个数组数组,因此@ignored
的每个元素都是一个数组。符号$ignored[0]
到达第零个元素(它是一个数组),->[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 "$keyt$ignored[0]->[0]t$ignored[0]->[1]";
输出:
$VAR1 = [
[
'3420',
'3446',
'13',
'39',
55
]
];
miRNA79 dvex219016 + 3420 3446
生成相同输出的另一个选项是使用t
:将所有值join
print join "t", $key, @{ $ignored[0] }[ 0, 1 ];