我试图识别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";
}发布于 2015-02-19 17:00:01
你说得对。它是哈希数组中的哈希。
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那样隐式地具有“数组”)。
https://stackoverflow.com/questions/28612205
复制相似问题