0

XML ファイルを取得しました。print Dumper今すぐ実行する$data->{Foo}と、次の出力が得られます。

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

2 番目のバーの下にあるものを印刷するにはどうすればよいですか? 私は試した:

$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 に答える