その主題を正しく述べたことを願っています。ファイルの読み取りから構築したハッシュのハッシュがあります。外側のハッシュはグループで、内側のハッシュはそのグループ内のパラメーターです。各パラメーター値はスカラーまたは配列のいずれかであり、配列はゼロまたは 1 から開始できます。
パラメータの値を返すサブルーチンを作成しました。呼び出し元の関数は、戻り値がスカラーか配列かを判断する必要があります。スカラーに対してはうまく機能します。配列値の配列への参照を返します ( のようになりますARRAY(0x004f00)
)。を使用Data::Dumper
すると、配列のように見えるデータが吐き出されますが、コードでそれを逆参照する方法がわかりません。誰かが私が間違っていることを指摘できますか?
%HoH = (
flintstones => {
husband => "fred",
possessions => [ undef, "car", "record player", "rock" ],
pal => "barney",
pets => [ "bird", "dinosaur" ],
},
);
get_value("possessions");
sub get_value {
my $what_i_want = shift;
@groups = keys(%HoH);
foreach my $group ( @groups ) {
foreach my $param ( keys( %{ HoH {group} } ) ) {
if ( $param eq $what_i_want ) {
return $HoH{$group}{$param};
}
}
}
}
呼び出し元は戻り値を配列 に代入する@return
ため、スカラーの場合は値を に入れる必要があります$return[0]
。
配列の場合は、配列に値を設定する必要があります。を呼び出すとDumper
、一重引用符で囲まれたスカラーと角括弧で囲まれた配列が出力されます。ただし、scalar(@return)
配列のサイズを確認するために使用すると、1 が返されます。
最後に角括弧を使用して return ステートメントを逆参照して、スカラーを返すことさえできるかどうかを確認しましたが、うまくいきませんでした。