【发布时间】:2014-08-01 21:23:59
【问题描述】:
我对 perl 哈希有点困惑。
我知道你可以通过调用来创建哈希:
my %hashTable;
$hashTable("Key") = "Value"
稍后,如果您想检索该值,您可以这样做
print $hashTable("Key")
但是,我对这个 for 循环感到困惑
foreach (keys %{$hashTable{"key"}})
{
print $_
}
如果没有 %{$hashTable{"key"}},它看起来会打印出每个键,但是如果你在哈希表前面执行 % 会发生什么?
我试图测试这个函数,给它一个名为“key”的键,它会给我一个错误:不能使用字符串(“key”)作为哈希引用。和多维哈希表有关系吗?
【问题讨论】:
-
我认为这可行的唯一方法是散列
hashTable包含自身,作为值,散列。所以$hashTable{"key"}会返回一个哈希值。 -
您的意思是在其中一个键值对中包含另一个哈希表吗?
-
是的。在散列
hashTable和键"key"中,值本身就是散列(您可以混合值包含的内容,无论是标量、数组还是散列)。keys %{$hashTable{"key"}}行从该值哈希返回键。 -
啊啊啊啊!!!现在我懂了。感谢您的帮助!
-
是的,您在子哈希的键上进行迭代。查看
perldsc- Perl Data Structures Cookbook 了解有关此类结构的更多信息。
标签: perl