私は別の出力を生成する2ビットのコードを持っていますが、なぜそれを理解するのが非常に難しいですか。
コードスニペット1:
my @args = $bighash{'arguments'}{'allocations'};
print "$args[0][1]";
コードスニペット2:
my @args = $bighash{'arguments'}{'allocations'}[0];
print "$args[1]";
最初のケースでは、私が期待している値を表示しています。後者の場合、何も印刷されません。誰もこれを説明できますか?
ハッシュに格納されている値は配列参照です。リファレンスを直接操作することができます:
my $args = $bighash{'arguments'}{'allocations'};
print $$args[1]; # or $args->[1]
または、配列を新しいものに展開することもできます:
my @args = @{ $bighash{'arguments'}{'allocations'} };
print $args[1];
エリック・ストロムの答えは基本的に正しいです...しかし、私は誰もあなたが働いているデータ構造を調べるためにData :: Dumperを使うことを提案していないことに驚いています。あなたはあなたがしたこととエリックの訂正の違いを実際に見ることができます。これは物事をあなたのためにまっすぐにするのに役立つかも
Re:use warnings ...新しく作成された配列の存在しない要素を印刷しようとすると警告が出るはずですか?私はかつて私が厳しいと警告を使用するまでオンラインで何かを尋ねることはないと言われました。それはちょっと極端ですが、-wとData :: Dumperは間違いなく私を助けます:-)