0

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

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

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

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

但这是不正确的语法。

谢谢,

4

1 回答 1

4

如果你遗漏了第一个'->',你会遇到麻烦。

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

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

你还需要小心[]vs. {}[]用于数组查找,{}用于哈希查找。Perl 可以让一个数组相信它是一个散列,如果它真的想要的话,有时会产生令人惊讶的结果。

因此,鉴于所有这些,您需要这样说:

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

或更迂腐:

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

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

于 2012-05-03T17:39:01.687 回答