リファレンス(1) 基本

値を間接的に参照したい時、Perlでは「リファレンス」という機能を使います。リファレンスを直訳すると「参照」です。そのまんまですね。(^_^;)
「間接的に参照」できると何が便利か。例えば変数間の関係性を表したり、1つの値を複数の変数で共有したり、関数の引数を値渡しでなく参照渡しにする事で無駄なコピーを無くしたり、と色々できます。
リファレンスには2種類あり、それぞれ「ハードリファレンス」「シンボリックリファレンス」と呼ばれます。単に「リファレンス」と言った場合、普通は前者の「ハードリファレンス」を指します。
これらの違いは、ハードリファレンスが値を直接指している「リファレンス」という型のスカラー値(C言語のポインタに近い、強い結び付き)であるのに対し、シンボリックリファレンスの中身は単なる文字列で、変数名を介して参照します(Javaのリフレクションに近い、弱い結び付き)。
つまり、ハードリファレンスは値に対する参照ですが、シンボリックリファレンスは変数に対する参照という事になりますね。
今後、ぱるも日記の文章では、特に言及しない限り「リファレンス」と書いた場合「ハードリファレンス」を指すものとします。
リファレンスはスカラー値の一種なので、配列やハッシュの要素として利用できます。これを利用して「配列へのリファレンス」の配列、つまり2次元配列構造を作る事ができます。
値のリファレンスを生成する事を「リファレンスする」と言い、逆にリファレンスから値を求める事を「デリファレンスする」と言います。
リファレンスのお陰で、Perlプログラミングの枠がとても拡がりそうです。(^_^)