Perl:按创建顺序检索哈希值



我有一个数组哈希。当我尝试检索它们时,数组中的值没有按照相应哈希键的顺序打印。我用过"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";;
    }
}

最新更新