我有一个哈希
%value
g=>10
i=>55
k=>4
n=>100
我有一个数组
@letters = ('k','i','n','g')
请让我知道如何按照数组中键的顺序对哈希进行排序。
答案 0 :(得分:5)
如果要按照它们在@letters
数组中出现的顺序打印哈希值,那么
print join ",", @value{@letters};
答案 1 :(得分:4)
代码:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use Tie::IxHash;
my %hash = (
g=>10,
i=>55,
k=>4,
n=>100,
);
my %sorted_hash;
tie %sorted_hash, "Tie::IxHash";
my @array = ('k','i','n','g');
foreach(@array)
{
if(defined($hash{$_}))
{
$sorted_hash{$_} = $hash{$_};
}
}
print Dumper(%sorted_hash);
打印:
$VAR1 = 'k';
$VAR2 = 4;
$VAR3 = 'i';
$VAR4 = 55;
$VAR5 = 'n';
$VAR6 = 100;
$VAR7 = 'g';
$VAR8 = 10;
提到,我使用了Tie :: ixHash模块。否则,Perl不会对数组键进行排序。
这个Perl模块实现了Perl哈希,它保留了哈希元素的添加顺序