【发布时间】:2014-02-13 14:42:48
【问题描述】:
为什么将哈希引用解引用为哈希并将其分配给标量会给出不相关的值(至少对我而言)?
代码:
my $hash = {
1 => 9,
2 => 10,
3 => 11,
4 => 12,
5 => 13,
6 => 14,
7 => 15,
8 => 16,
};
my $dereferenced = %$hash;
print $dereferenced;
Perl 版本:5.12.4
操作系统:Windows 7
打印的值为
7/16
它是否与 Perl 内部有关?
【问题讨论】:
-
您希望
$dereferenced包含什么内容? -
我的 $dereferenced = %$hash;
-
谢谢!抱歉,我发布了重复的问题!现在我明白了 Bucket 的总大小 = 16。包含一个或多个元素的 Bucket 的数量 = 7。因此是 7/16。这个哈希似乎有更多的冲突!
-
@Borodin:我曾想过以下不同的方向。我们可以将哈希定义为 %hash=(1,2,3,4)。它实际上意味着 (1=>2, 3=>4)。同样,取消引用哈希引用也应该返回相同类型的数组(如果 LValue 不是哈希)。在这种情况下(1、9、2、10、3、11 等)。因此,将此返回的数组分配给标量与计算数组长度($length = @array)相同。
标签: perl hash dereference