2012-05-03 10 views
0

私はXMLファイルを持っています。print Dumperを私の今$data->{Foo}で実行すると、次のような出力が得られます。Perl SimpleXML:キーなしの値にアクセスする方法

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

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

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

しかし、それは構文が正しくありません。 ' - >' あなたが最初に出たままならば

おかげで、

ダン

+0

$ data - > {foo} - > {bar} [1] $ data - > {foo} - > {1} - > {bar} – dlite922

+2

'{bar}' '{Bar} 'と同じではありません。あなたの言いたいことを言い、あなたが言うことを意味してください。 – mob

+0

申し訳ありませんが、大文字と小文字の区別が間違っています。今修正されました。 – dlite922

答えて

4

あなたがトラブルに取得するつもりです。

もし$foo->[0]と言ったら、fooは配列への参照であるスカラーであると思って、その参照配列の最初の要素を返します。

もしあなたが$foo[0]と言うなら、Perlはfooが配列だと思って、最初の要素を返します。

また、[]{}の間に注意する必要があります。 []は配列ルックアップ用、{}はハッシュ検索用です。 Perlは、本当に欲しいのであればハッシュであることをアレイに納得させることができます。

だから、すべてのことを考えると、あなたはこのような何かを言う必要があります。pedantically

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

以上:以下のコメントを考えると

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

を、最初のフォームが好ましいです私が思うことは、かなり明白な理由です。詳細については、perldoc perlrefの「参照の使用」を参照してください。

+0

これをもう一度見てみると、最初のものの後にすべての ' - >'を残して、 '$ data - > {Foo} [1] {Bar};' –

+5

とすることができます*最初の後に ' - >'をすべて残しておかなければなりません。 '$ data - > {Foo} [1] {Bar}'は同じことです。 – derobert

+0

ええ、私は正しいはずだと思います。私は最近、最近いくつかの言語を使用していますが、テストするまで100%ではありませんでした。最初に投稿し、後で質問に答えます。 :) –

関連する問題