我有这部分代码来捕捉一个哈希数组的更大值。当Perl的标识的最大值阵列由@slice阵列中移除:如何在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的值,就像列表一样。接下来,将生成物农业协定,我要重复过去的流...
您的代码没有按”不要做你说的话。 'max(map $ _-> [1],@ $ val)'确定AoA $ val中数组的第二个元素的最大值。这个最大值然后被忽略。 '$ val'中的第二个数组被复制到'@ slice'并在'$ val'中设置为'undef'。 ('delete'在阵列上不起作用) – Borodin 2013-02-12 09:13:15