Perl 将散列排序为数组中的键

Perl 将散列排序为数组中的键,perl,Perl,我有一份杂烩 %value g=>10 i=>55 k=>4 n=>100 我有一个数组 @letters = ('k','i','n','g') 请告诉我如何按照数组中键的顺序对哈希进行排序 如果要按哈希值在@letters数组中的显示顺序打印哈希值 print join ",", @value{@letters}; 代码: 印刷品: $VAR1 = 'k'; $VAR2 = 4; $VAR3 = 'i'; $VAR4 = 55; $VAR5 = 'n'; $VA

我有一份杂烩

%value
g=>10
i=>55
k=>4
n=>100
我有一个数组

@letters = ('k','i','n','g')

请告诉我如何按照数组中键的顺序对哈希进行排序

如果要按哈希值在
@letters
数组中的显示顺序打印哈希值

print join ",", @value{@letters};
代码:

印刷品:

$VAR1 = 'k';
$VAR2 = 4;
$VAR3 = 'i';
$VAR4 = 55;
$VAR5 = 'n';
$VAR6 = 100;
$VAR7 = 'g';
$VAR8 = 10;
请注意,我使用了Tie::ixHash模块。否则,Perl将不会对数组键进行排序

此Perl模块实现Perl哈希,保留添加哈希元素的顺序


由于散列不保留顺序,您希望结果如何?我可以按@letters的顺序存储到其他散列中吗?散列不保留顺序,因此如果您需要对其进行排序,请使用数组数组或CPA的Tie::IxHash,也可以将数据保留在散列中(可能是出于某种方便的原因)并在一组密钥中保持要使用它们的顺序。但在本例中,您已经拥有了该数组;只需使用它来获取一个值片段(如mpapec的答案)或在其上循环:
对于我的$key(@letters){my$value=$value{$key};..}
$VAR1 = 'k';
$VAR2 = 4;
$VAR3 = 'i';
$VAR4 = 55;
$VAR5 = 'n';
$VAR6 = 100;
$VAR7 = 'g';
$VAR8 = 10;