我对perl散列有些困惑。
我知道您可以通过调用:
my %hashTable;
$hashTable("Key") = "Value"稍后,如果要检索值,可以执行以下操作:
print $hashTable("Key")但是,我对这个for循环感到困惑
foreach (keys %{$hashTable{"key"}})
{
print $_
}如果没有%{$hashTable{"key"}},它将打印出每个键,但如果在哈希表前面执行%,会发生什么情况?
我试着测试这个函数,通过给它一个名为" key“的键,它会给我一个错误:不能使用字符串("key")作为散列引用。有什么与多维哈希表有关吗?
发布于 2014-08-01 21:50:40
正在发生的事情是,您有一个名为%hashTable的散列。它有一个带有键key的值,对于一个值,有另一个哈希表。
所以密码:
foreach (keys %{$hashTable{"key"}})
{
print $_
}正在遍历第二个散列,并打印出其中包含的键。
下面是一个使用文档链接的米勒提供的示例:
#!/usr/bin/perl
use strict;
use warnings;
my %HoH = (
flintstones => {
lead => "fred",
pal => "barney",
},
jetsons => {
lead => "george",
wife => "jane",
"his boy" => "elroy",
},
simpsons => {
lead => "homer",
wife => "marge",
kid => "bart",
},
);
foreach (keys %{$HoH{"flintstones"}})
{
print $_."\n";
}这有一个输出:
lead
pal发布于 2014-08-01 21:49:57
想象一下你的hashTable
key1: <-+
value1 |
key2: |
value2 += this is your hashTable, with 3x key/value
key3: |
value3 <-+现在,改变keyN - so的值,它将不包含标量值,而是包含另一个散列,例如:
key1:
subkey1a: subval1a <-+ this "HASH" is the value for the "key1".
subkey1b: subval1b <-|
key2:
subkey2a: subval2a
key3:
subkey3a: subval3a
subkey3b: subval3b
subkey3c: subval3chttps://stackoverflow.com/questions/25088891
复制相似问题