Perl SimpleXML:如何无键访问值
我有一个XML文件,当我在我现在的Perl SimpleXML:如何无键访问值,perl,hash,simplexml,Perl,Hash,Simplexml,我有一个XML文件,当我在我现在的$data->{Foo}上执行打印转储程序时,我得到以下输出 $VAR1 = [ { 'Bar' => { ...etc... } }, { 'Bar' => { ...etc2...
$data->{Foo}
上执行打印转储程序时,我得到以下输出
$VAR1 = [
{
'Bar' => {
...etc...
}
},
{
'Bar' => {
...etc2...
}
}
];
如何打印第二栏下的内容?我试过:
$data->{Foo}{1}->{Bar}
但这是不正确的语法
谢谢
Dan如果你漏掉了第一个'->',你会有麻烦的
如果说$foo->[0]
Perl认为foo
是一个标量,是对数组的引用,然后返回该引用数组的第一个元素
如果说$foo[0]
Perl认为foo
是一个数组,并返回它的第一个元素
您还需要注意[]
与{}
的区别<代码>[]
用于数组查找,{}
用于哈希查找。Perl可以让数组相信它是一个哈希,如果它真的想这样做的话,有时会有令人惊讶的结果
因此,考虑到所有这些,你需要这样说:
$data->{Foo}[1]{Bar}代码>
或者更迂腐地说:
$data->{Foo}->[1]->{Bar}代码>
鉴于下面的评论,出于我认为非常明显的原因,首选第一种形式。有关更多详细信息,请参见perldoc perlref
中的“使用引用”。如果省略第一个'->',您将遇到麻烦
如果说$foo->[0]
Perl认为foo
是一个标量,是对数组的引用,然后返回该引用数组的第一个元素
如果说$foo[0]
Perl认为foo
是一个数组,并返回它的第一个元素
您还需要注意[]
与{}
的区别<代码>[]
用于数组查找,{}
用于哈希查找。Perl可以让数组相信它是一个哈希,如果它真的想这样做的话,有时会有令人惊讶的结果
因此,考虑到所有这些,你需要这样说:
$data->{Foo}[1]{Bar}代码>
或者更迂腐地说:
$data->{Foo}->[1]->{Bar}代码>
鉴于下面的评论,出于我认为非常明显的原因,首选第一种形式。有关详细信息,请参见perldoc perlref
中的“使用引用”。还尝试了一些不同的变体:$data->{foo}->{bar}[1]$data->{foo}->{1}->{bar}{bar}
与{bar}
不同。请说出你的意思,说出你的意思。对不起,请原谅这个区分大小写的错误。现在已经更正。还尝试了一些不同的变体:$data->{foo}->{bar}[1]$data->{foo}->{1}->{bar}{bar}
与{bar}
不同。请说出你的意思,说出你的意思。对不起,请原谅这个区分大小写的错误。现在它被更正了。再看一次,你可能可以省去第一个之后的所有'->',结果是$data->{Foo}[1]{Bar}代码>你可以(我敢说应该)在第一次之后省去所有->
$data->{Foo}[1]{Bar}
是一样的。是的,我认为应该是正确的。我最近刚刚使用了一些其他语言,直到我测试它时才100%使用。先发帖,后回答问题。:)再看一次,您可能能够省去第一个之后的所有'->',结果是$data->{Foo}[1]{Bar}代码>你可以(我敢说应该)在第一次之后省去所有->
$data->{Foo}[1]{Bar}
是一样的。是的,我认为应该是正确的。我最近刚刚使用了一些其他语言,直到我测试它时才100%使用。先发帖,后回答问题。:)