- ベストアンサー
リファレンスを用いた記述について
仮に、リファレンス値を「$hoge」とします。 通常、このリファレンスの値を参照する場合、 $$hoge とすれば取得できるかと思います。 とある参考書をみていたところ、 @{$hoge} にてリファレンス値を取得との記述がありました。 (例文:push @work,@{$hoge}) どうして、@をつけてリファレンスの指す値を取得するのか 理解できません。 リファレンスについて混乱しつつあるので、回答よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「何のリファレンスなのか」で付ける記号は変わります。 例えば $hoge = \$foo; なら $$hoge で $foo の値が求まりますし、 $hoge = \@foo; なら @$hoge で @foo の値が得られます。 ハッシュやサブルーチンのリファレンスについても同様。
その他の回答 (1)
- zah90921
- ベストアンサー率0% (0/2)
回答No.2
#1さんの回答に補足です。 @{$hoge}はスカラ値をとりだしているのではなく、配列を丸ごと取り出しています。配列中の個々のスカラ値を参照するには、例えば、$hoge->[0] とか、${$hoge}[0] とかで参照します。 リファレンスはC言語などのポインタと同様の概念ですので、(スカラ値である)リファレンス値は参照したいデータの先頭アドレスを示すと考えると良いでしょう。 $hogeによって参照されるデータが配列ならば@{$hoge}でその配列全体を参照しているということです。 対象がハッシュならば%{$hoge}でハッシュ全体を参照できます。
質問者
お礼
回答ありがとうございました。 ちょっとした記述でも、奥が深いですね。 とても参考になりました。
お礼
回答ありがとうございました。 分かりやすい説明で、納得できました。