« 変数に値代入時の変則的な?書き方 | メイン | シングルモード起動 ランレベル1 »

2005年10月14日

リファレンス

strictなどでグローバル変数を使わない場合、サブルーチンやクラス側では
わざわざ値を渡せしてあげないと、受け渡しが出来ないらすいぃ。

それは、変数名がかぶったりする、危険性を回避するため かな?

でもいちいち引き渡したりするのが、面倒なときがある。
ので、 リファレンス変数でメモリの番地を引き渡す事ができる。
これは便利

C言語ではポインタっていうんだって

使い方 変数(スカラーでもハッシュでもひいてはリファレンス変数自体でもOK)の前に#をつけるだけ。

反対にリファレンス変数から値自体を取り出したりするときは $hogeをリファレンス変数とすると
スカラー変数のリファレンス変数なら $moto = $$hoge
ハッシュの場合 %moto = %$hoge
配列(リスト)の場合 @moto = @$hoge
で 元の値がとれまっする (デリファレンスという)

------------------------------------------------------------
$word = "A";
$ref_word = \$word;

print "リファレンス $ref_word
";

print "リファから参照 $$ref_word";
------------------------------------------------------------

投稿者 muuming : 2005年10月14日 17:52

コメント

コメントしてください




保存しますか?