在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。
答案 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
的结果放在数组中并循环播放此数组。