我有一个哈希
%value
g=>10
i=>55
k=>4
n=>100
我有一个数组
@letters = ('k','i','n','g')
请让我知道如何按数组中键的顺序对我的哈希进行排序。
我有一个哈希
%value
g=>10
i=>55
k=>4
n=>100
我有一个数组
@letters = ('k','i','n','g')
请让我知道如何按数组中键的顺序对我的哈希进行排序。
如果您想按照它们在@letters
数组中出现的顺序打印哈希值,
print join ",", @value{@letters};
代码:
#!/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 哈希,它保留了添加哈希元素的顺序