Arrays 如何在Perl中打印@slice数组元素?

Arrays 如何在Perl中打印@slice数组元素?,arrays,perl,hash,slice,Arrays,Perl,Hash,Slice,我有这部分代码来捕获散列中数组的较大值。当Perl确定最大值时,@slice array将删除该数组: 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'

我有这部分代码来捕获散列中数组的较大值。当Perl确定最大值时,@slice array将删除该数组:

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]中最小值的减法是否正确 您有一个数组,因此
@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 "$key\t$ignored[0]->[0]\t$ignored[0]->[1]";
输出:

$VAR1 = [
          [
            '3420',
            '3446',
            '13',
            '39',
            55
          ]
        ];

miRNA79 dvex219016 +    3420    3446
另一个生成相同输出的选项是用
\t
连接所有值:

print join "\t", $key, @{ $ignored[0] }[ 0, 1 ];

完美、简单、实用的解决方案。谢谢!你的代码没有按你说的做<代码>最大值(映射$->[1],@$val)
确定AoA$val中数组第二个元素的最大值。然后忽略该最大值。
$val
中的第二个数组复制到
@slice
中,并在
$val
中设置为
undef
。(
delete
对数组不起作用)
print join "\t", $key, @{ $ignored[0] }[ 0, 1 ];