嘿,我只是想知道是否有一个很酷的“单线程”可以对我的哈希控件数组引用进行排序。所以我的哈希中有一堆键/值,如:
$DataBase{$key} = \@value;
但是我想通过array[0]
元素对哈希进行排序。然后循环通过'em。我有这个开头:
foreach my $key (sort {$DataBase{$a} cmp $DataBase{$b} } keys %DataBase)
但是,这显然只是通过数组的指针值对哈希值进行排序。它并不一定是“一行”,但我希望找到一个不涉及重构哈希的解决方案。
答案 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中,向您展示了如何按照您喜欢的方式对哈希进行排序。