2

私はPerlを学んでいるので、初心者の質問は許してください。私はそのようないくつかのコードを持っています:

my $familyInfo = [{
            'dad' => 'donald',
            'mom' => 'helen',
            'sister' => 'cate',
}];

このコードは変更できないことに注意してください。私がやりたいのは、このデータ構造からお母さんを抽出することです。

my $mother = $familyInfo{mom};
print "mother: $mother\n";

my $mother = $familyInfo[0]{mom};
print "mother: $mother\n";

これはまったく機能しません。$motherには何も割り当てられません。私が理解していないのは、初期化によって作成される構造のタイプと、それを使用する方法です。このねじれた言語の構文を理解するのに役立つ情報を提供していただければ助かります。

4

1 に答える 1

5

逆参照する2つのレイヤーがあります。外側のレイヤーは配列参照であり、内側のレイヤーはハッシュ参照です。

my $mother = $familyInfo->[0]{mom};

言い換えれば$familyInfo、匿名配列への参照を保持します。要素は1つだけです。その要素には、匿名ハッシュへの参照が含まれています。

投稿したサンプルコードとは異なる重要なコンポーネントは、間接参照演算子です->

矢印演算子がないと、Perlにその$familyInfo[0]要素である@familyInfo@familyInfo存在しない、存在すらしない)ことを伝えていることになります。存在するのは$familyInfo; 配列参照を含むスカラー。その要素を取得する場合は、逆参照する必要があります。perldoc perlreftut構文を明確にするのに役立つはずです。

上記がうまくいかない場合は、入力データが表示内容と一致していません。その場合は、Data :: Dumperを使用して、入力データを詳しく調べます。

use Data::Dumper;
print Dumper $familyInfo;
于 2012-08-08T17:49:10.760 に答える