« 変数に値代入時の変則的な?書き方 | メイン | シングルモード起動 ランレベル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