如何对值为数组引用的Perl哈希进行排序?

时间:2009-05-05 21:58:48

标签: perl sorting hash reference perl-data-structures

嘿,我只是想知道是否有一个很酷的“单线程”可以对我的哈希控件数组引用进行排序。所以我的哈希中有一堆键/值,如:

$DataBase{$key} = \@value;

但是我想通过array[0]元素对哈希进行排序。然后循环通过'em。我有这个开头:

foreach my $key (sort {$DataBase{$a} cmp $DataBase{$b} } keys %DataBase)

但是,这显然只是通过数组的指针值对哈希值进行排序。它并不一定是“一行”,但我希望找到一个不涉及重构哈希的解决方案。

3 个答案:

答案 0 :(得分:8)

foreach my $key (sort {$DataBase{$a}->[0] cmp $DataBase{$b}->[0] } keys %DataBase)

答案 1 :(得分:2)

对于记录(你可能来自C背景),Perl没有指针,但是references

  

Perl [...]允许您创建   匿名数据结构,和   支持基本数据类型   松散地称为“参考”   相当于一个C指针。就像C   指针可以指向数据以及   程序,Perl的参考可以   参考传统的数据类型   (标量,数组和散列)和   其他实体,如子程序,   typeglobs和文件句柄。与C不同,   他们不会让你偷看和戳   原始内存位置。

类似,但不一样。

下进行。

答案 2 :(得分:1)

我认为您提出的问题与How can I sort a hash-of-hashes by key in Perl?相同。我的答案在Perl FAQ中,向您展示了如何按照您喜欢的方式对哈希进行排序。