我有這部分代碼來捕捉一個哈希數組的更大值。當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