3

嘿,我只是想知道是否有一个很酷的“一个衬里”可以对我的哈希保存数组引用进行排序。所以我的哈希中有一堆键/值,例如:

$DataBase{$key} = \@value;

但是我想按array[0]元素对哈希进行排序。然后循环遍历它们。我有这个开始:

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

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

4

3 回答 3

8
foreach my $key (sort {$DataBase{$a}->[0] cmp $DataBase{$b}->[0] } keys %DataBase)
于 2009-05-05T22:01:41.227 回答
2

作为记录(您可能来自 C 背景),Perl 没有指针,但引用

Perl [...] 允许您创建匿名数据结构,并支持一种称为“引用”的基本数据类型,它大致等同于 C 指针。正如 C 指针可以指向数据和过程一样,Perl 的引用可以引用常规数据类型(标量、数组和散列)和其他实体,例如子例程、类型球和文件句柄。与 C 不同,它们不允许您窥视和戳原始内存位置。

类似,但不一样。

C。

于 2009-05-05T22:44:12.093 回答
1

我认为您问的基本问题与如何在 Perl 中按键对哈希值进行排序?. 我在 Perl FAQ 中的回答向您展示了如何以您喜欢的任何方式对哈希进行排序。

于 2009-05-07T05:27:20.010 回答