我有一个XML文件,当我在我现在print Dumper
上执行$data->{Foo}
时,我得到以下输出。
$VAR1 = [
{
'Bar' => {
...etc...
}
},
{
'Bar' => {
...etc2...
}
}
];
如何打印第二个栏下的内容?我试过了:
$data->{Foo}{1}->{Bar}
但那是不正确的语法。
谢谢,
丹
答案 0 :(得分:4)
如果省略第一个' - >',你会遇到麻烦。
如果你说$foo->[0]
Perl认为foo
是一个标量,它是对数组的引用,然后返回该引用数组的第一个元素。
如果你说$foo[0]
Perl认为foo
是一个数组,并返回它的第一个元素。
您还需要注意[]
与{}
的关系。 []
用于数组查找,{}
用于哈希查找。 Perl可以说服一个数组,如果它真的想要它是一个哈希,有时会产生令人惊讶的结果。
所以,考虑到所有这些,你需要说出这样的话:
$data->{Foo}[1]{Bar};
或更迂腐:
$data->{Foo}->[1]->{Bar};
鉴于下面的评论,第一种形式是我认为非常明显的原因。有关详细信息,请参阅perldoc perlref
中的“使用参考”。