作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试识别 Data::Dumper
的输出, 它在我试图修改的某些代码中的散列上使用时会产生以下输出:
print Dumper(\%unholy_horror);
$VAR1 = {
'stream_details' => [
{
'file_path' => '../../../../tools/test_data/',
'test_file' => 'test_file_name'
}
]
};
这是散列中数组中的散列吗?如果不是,那是什么?以及访问“文件路径”和“test_file”键及其值的语法是什么。
我想像下面那样迭代内部哈希,我该怎么做?
while ( ($key, $value) = each %hash )
{
print "key: $key, value: $hash{$key}\n";
}
最佳答案
你是对的。它是散列中数组中的散列。
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
循环进行迭代 - 假设您想要迭代整个事情。
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 而得到一些看起来很奇怪的哈希拓扑。可能值得看看是否发生了这种情况,因为“处理”已解析的对象可能更容易。
上面的结果可能是:
#JSON
{"stream_details":[{"file_path":"../../../../tools/test_data/","test_file":"test_file_name"}]}
或来自 API 的类似内容。 (我认为它不太可能是 XML,因为 XML 不像 JSON 那样隐含地具有“数组”)。
关于arrays - 散列数组中的散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28612205/
我是一名优秀的程序员,十分优秀!