Perl:访问散列内的散列值

标签 perl hash perl-data-structures hash-of-hashes perl-hash

我刚刚开始学习 Perl。 我对访问哈希值有点困惑。下面是我尝试访问散列内的散列值的代码。 由于我使用简单的文本编辑器进行编码,因此我无法找出问题所在。请帮忙

my %box = (
    Milk => {
        A => 5,
        B => 10,
        C => 20,
    },
    Chocolate => {
        AB => 10,
        BC => 25,
        CD => 40,
    },
);

foreach my $box_key(keys %box) {
    foreach my $inside_key (keys %box{box_key})
    print "$box_key"."_$inside_key""is for rupees $box{box_key}{inside_key}";
}

最佳答案

如果语法是

keys %hash

对于哈希来说,它是

keys %{ ... }

用于哈希引用。在本例中,引用存储在 $box{$box_key} 中,因此您可以使用

keys %{ $box{$box_key} }

此外,您还可以在几个实际想要使用 $box_key 命名的元素的地方访问名为 box_keyinside_key 的元素和$inside_key


最后,您可以在变量名称周围使用花括号来指示 Perl 变量名称的结尾位置。


for my $box_key (keys %box) {
   for my $inside_key (keys %{ $box{$box_key} }) {
      print "${box_key}_$inside_key is for rupees $box{$box_key}{$inside_key}\n";
   }
}

关于Perl:访问散列内的散列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17036955/

相关文章:

Perl - 散列和列的散列 :(

perl - 为什么在 `map` BLOCK中没有插值?

linux - 脚本无法确认文件夹,即使它们存在

hash - 如何从 elixir 中的 map 创建 `hash` 或 `md5`?

c++ - 以最有效的形式将 32 位值存储为 C 字符串

hash - 布隆过滤器和 FM 草图的区别

perl - 是否可以使用 while(my($key, $value) ... ) {} 方法按排序顺序遍历哈希?

php - web中长号的操作

我可以用 Perl 获取 sizeof (C 中的字节长度)吗?

perl - 如何在 Perl 中轻松执行异步 REST 请求?