0

サード パーティに対して API 呼び出しを行うと、結果が %hash という名前のハッシュ値で返されます。

Data::Dumper を使用して結果を印刷すると、次の結果が得られます。

print Dumper %hash;

$VAR1 = '';
$VAR2 = {
     'Field1' => 'first result',
     'Field2' => {},
     'Field3' => 'random value',
     'Field4' => {},
     'Field5' => '102',
     'Field6' => '3600176056428',
     'Field7' => 'AhhRbwSXxIzaSZYuvgXE8AmAXUdy'
};

Dumper が 2 つの値を返すことに慣れていません。構造体が保持する値にアクセスする方法を判断できるように、構造体を出力しました。2 番目の VAR ($VAR2) のハッシュ データ構造にアクセスしたい。これはどのように正確に行われますか?$hash{'Field2'} は値を返しません (明らかに)。

4

4 に答える 4

2

ハッシュリファレンスを保持する%hashキー''(空の文字列) が 1 つだけあります。次のようになります。

'' => {
     'Field1' => 'first result',
     'Field2' => {},
     'Field3' => 'random value',
     'Field4' => {},
     'Field5' => '102',
     'Field6' => '3600176056428',
     'Field7' => 'AhhRbwSXxIzaSZYuvgXE8AmAXUdy'
};

$hash割り当てた場所に戻り、代わりに必要かどうかを確認します。

于 2013-02-11T21:44:27.977 に答える
2

Your%hashには 1 つのキー (空の文字列) と 1 つの値 ( として表されるデータ構造) が含まれてい$VAR2ます。を呼び出すDumper(%hash)と、Dumper関数はハッシュを 2 つの要素を持つ平坦化されたリストとして受け取るため、2 つの値を出力します。

より標準的な使用方法Dumperは、データ構造への参照を渡すことです。

print Dumper \%hash;
于 2013-02-11T21:41:41.507 に答える
2

通常、参照によってハッシュをダンプするので、print Dumper \%hash.

現状ではData::Dumper、ハッシュキーと値のリストを出力するため%hash、キーとして空の文字列を持つ単一の要素があるように見えます。

としてこれにアクセスできる$hash{''}ため、値は$hash{''}{Field1}etc.

于 2013-02-11T21:44:45.903 に答える
1

ハッシュをハッシュ参照に変換する必要があります。

print Dumper \%hash;

それ以外の場合%hashは、キー => 値のペアのリストに変換されます。これは、リスト コンテキストでのハッシュ動作です。

値にアクセスするには、次を使用する必要があります。

$hash{''}{'Field1'}

実際には、ハッシュのハッシュがあるためです。

于 2013-02-11T21:44:30.397 に答える