Perlのリファレンスとデリファレンスを扱う覚え書き
久しぶりにPerlでプログラムを書こうとしたら、すっかり忘れてしまっていたので。
リファレンスを取得しよう
まずは通常の変数からリファレンスを取得する場合は変数名の前に\(環境によっては¥だったり\だったり)を付けてやればOK
無名の配列や連想配列(ハッシュ)からいきなりリファレンスを取得するには、配列の場合はブランケット([])を、ハッシュの場合はブレース({})使って、普通に配列や連想配列を作る感じで出来ちゃいます。
これでOK
デリファレンスしよう
普通にリファレンスを元の変数の形に戻すには、その変数を表すファニー文字をリファレンスを格納した変数の前に付けてやればOKです。
こんな面倒なことをしなくても、アロー演算子(->)を使って直接値にアクセスすることも可能です。
もしくは暗黙のデリファレンスを利用する方法もあります。
このリファレンスを格納した変数を囲っているプレース(上の例では →{$aRef}← )は省略可能($$aRef[0] と書いてもOK)なのですが、複雑な(ネストした)構造になっているものを扱う時なんか、Perlの処理系が混乱する(エラーになる)場合があるので、書くようにしておいた方が後々ハマらなくていい気がします。
もっとも、そんな複雑なデータを扱う場合は暗黙のデリファレンスは使わずに、アロー演算子を使うようにした方が、よっぽど幸せな気がしますが(^_^;)。
【関連エントリー】
・Perlで無名(変数|配列|ハッシュ|関数)を扱う際の覚え書き