Perl SimpleXML:如何访问没有键的值

时间:2012-05-03 17:13:59

标签: perl hash simplexml

我有一个XML文件,当我在我现在print Dumper上执行$data->{Foo}时,我得到以下输出。

$VAR1 = [
          {
            'Bar' => { 
                       ...etc...
                     }
          },
          {
            'Bar' => {
                       ...etc2...
                     }
          }
         ];

如何打印第二个栏下的内容?我试过了:

$data->{Foo}{1}->{Bar}

但那是不正确的语法。

谢谢,

1 个答案:

答案 0 :(得分:4)

如果省略第一个' - >',你会遇到麻烦。

如果你说$foo->[0] Perl认为foo是一个标量,它是对数组的引用,然后返回该引用数组的第一个元素。

如果你说$foo[0] Perl认为foo是一个数组,并返回它的第一个元素。

您还需要注意[]{}的关系。 []用于数组查找,{}用于哈希查找。 Perl可以说服一个数组,如果它真的想要它是一个哈希,有时会产生令人惊讶的结果。

所以,考虑到所有这些,你需要说出这样的话:

$data->{Foo}[1]{Bar};

或更迂腐:

$data->{Foo}->[1]->{Bar};

鉴于下面的评论,第一种形式是我认为非常明显的原因。有关详细信息,请参阅perldoc perlref中的“使用参考”。