首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl - Hash表和foreach语句

Perl - Hash表和foreach语句
EN

Stack Overflow用户
提问于 2014-08-01 21:23:59
回答 2查看 616关注 0票数 0

我对perl散列有些困惑。

我知道您可以通过调用:

代码语言:javascript
复制
my %hashTable;

$hashTable("Key") = "Value"

稍后,如果要检索值,可以执行以下操作:

代码语言:javascript
复制
print $hashTable("Key")

但是,我对这个for循环感到困惑

代码语言:javascript
复制
foreach (keys %{$hashTable{"key"}})
{
    print $_
}

如果没有%{$hashTable{"key"}},它将打印出每个键,但如果在哈希表前面执行%,会发生什么情况?

我试着测试这个函数,通过给它一个名为" key“的键,它会给我一个错误:不能使用字符串("key")作为散列引用。有什么与多维哈希表有关吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-01 21:50:40

正在发生的事情是,您有一个名为%hashTable的散列。它有一个带有键key的值,对于一个值,有另一个哈希表

所以密码:

代码语言:javascript
复制
foreach (keys %{$hashTable{"key"}})
{
    print $_
}

正在遍历第二个散列,并打印出其中包含的键。

下面是一个使用文档链接米勒提供的示例:

代码语言:javascript
复制
#!/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";
}

这有一个输出:

代码语言:javascript
复制
lead
pal
票数 4
EN

Stack Overflow用户

发布于 2014-08-01 21:49:57

想象一下你的hashTable

代码语言:javascript
复制
key1:           <-+
    value1        |
key2:             |
    value2        += this is your hashTable, with 3x key/value
key3:             |
    value3      <-+

现在,改变keyN - so的值,它将不包含标量值,而是包含另一个散列,例如:

代码语言:javascript
复制
key1:
    subkey1a: subval1a      <-+ this "HASH" is the value for the "key1".
    subkey1b: subval1b      <-|
key2:
    subkey2a: subval2a
key3:
    subkey3a: subval3a
    subkey3b: subval3b
    subkey3c: subval3c
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25088891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档