首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >散列中的散列

散列中的散列
EN

Stack Overflow用户
提问于 2015-02-19 16:55:12
回答 1查看 66关注 0票数 3

我试图识别Data::Dumper的输出,当在我试图修改的代码中对散列使用时,它会生成下面的输出:

代码语言:javascript
复制
print Dumper(\%unholy_horror);
$VAR1 = {
      'stream_details' => [
                            {
                              'file_path' => '../../../../tools/test_data/',
                              'test_file' => 'test_file_name'
                            }
                          ]
    };

这是哈希数组中的哈希吗?如果不是,那是什么?访问“文件路径”和"test_file“键的语法以及它们的值是什么。

我想像下面这样迭代内部哈希,我怎么做呢?

代码语言:javascript
复制
while ( ($key, $value) = each %hash )
{
    print "key: $key, value: $hash{$key}\n";
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-19 17:00:01

你说得对。它是哈希数组中的哈希。

代码语言:javascript
复制
my %top;
$top{'stream_details'}[0]{'file_path'} = '../../../../tools/test_data/';
$top{'stream_details'}[0]{'test_file'} = 'test_file_name';

print Dumper \%top;

您可以像上面那样访问元素,或者使用3个级别的for循环进行迭代--假设您想要迭代整个过程。

代码语言:javascript
复制
foreach my $topkey ( keys %top ) { 
   print "$topkey\n";
   foreach my $element ( @{$top{$topkey}} ) {
       foreach my $subkey ( keys %$element ) { 
           print "$subkey = ",$element->{$subkey},"\n";
       }
   }
}

我想补充的是--有时解析XML或JSON会得到一些看起来很奇怪的散列拓扑。也许值得看看是否发生了这种情况,因为使用解析的对象可能更容易。

上述情况可能是由于:

代码语言:javascript
复制
#JSON
{"stream_details":[{"file_path":"../../../../tools/test_data/","test_file":"test_file_name"}]}

或者API中类似的东西。(我认为不太可能是XML,因为XML并不像JSON那样隐式地具有“数组”)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28612205

复制
相关文章

相似问题

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