对嵌套哈希的哈希键进行排序

时间:2012-01-08 22:41:50

标签: perl sorting hash

在perl中,我有一个如下所示的哈希:

   $hash{key1}->{a} = 1;
   $hash{key1}->{b} = 3;

   $hash{key2}->{a} = 4;
   $hash{key2}->{b} = 7;

   $hash{key3}->{a} = 2;
   $hash{key3}->{b} = 5;

如何通过键a的值对此哈希的键进行排序。例如,按键a的值以数字升序对上述哈希进行排序将得到:key1,key3,key2。

1 个答案:

答案 0 :(得分:4)

perl没有排序哈希的概念,你必须在foreach循环中“排序”你的键:

#!/usr/bin/perl -W
use strict;

my %hash = ();

$hash{key1}->{a} = 1;
$hash{key1}->{b} = 3;

$hash{key2}->{a} = 4;
$hash{key2}->{b} = 7;

$hash{key3}->{a} = 2;
$hash{key3}->{b} = 5;

print "$_\n" foreach sort {$hash{$a}->{a} <=> $hash{$b}->{a}} keys %hash;

或者,您可以将sort的结果放在数组中并循环播放此数组。