我是一个数组哈希。当我尝试检索它们时,不会根据相应散列键的顺序打印数组中的值。我已经习惯了 两个' Tie :: IxHash :: Easy'并且' Tie :: Autotie' Tie :: IxHash'把哈希捆绑起来。
例如:
use strict;
use warnings;
use Tie::IxHash::Easy;
tie my %idAlignment, 'Tie::IxHash::Easy';
@{$idAlignment{1}{r1}} = qw/4032.82 4145.04 4519.05 4527.46 5144.13/;
@{$idAlignment{1}{t1}} = qw/4032.86 4144.92 4519.11 - -/;
printAlnCols($idAlignment{1},0);
sub printAlnCols{
my($alnRef,$colIndex)=@_;
my %Aln=%{$alnRef};
foreach my $k(keys %Aln ){
print $Aln{$k}[$colIndex],"\n";;
}
}
该脚本打印4032.86和4032.82,而我希望它打印4032.82后跟4032.86,因为$ idAlignment {1} {r1}}是在$ idAlignment {1} {t1}之前创建的。
提前致谢
答案 0 :(得分:3)
您唯一的问题是您正在将有序哈希的副本复制到新的无序哈希值Aln中。只需使用引用:
sub printAlnCols {
my ($alnRef,$colIndex) = @_;
foreach my $k(keys %$alnRef){
print $alnRef->{$k}[$colIndex],"\n";;
}
}