我有一个数组哈希。当我尝试检索它们时,不会根据相应散列键的顺序打印数组中的值。我使用'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}之前创建的。
提前致谢
您唯一的问题是您正在将有序散列的副本复制到新的无序散列%Aln中。只需使用参考:
sub printAlnCols {
my ($alnRef,$colIndex) = @_;
foreach my $k(keys %$alnRef){
print $alnRef->{$k}[$colIndex],"\n";;
}
}