Perl 4 では、複雑なデータ構造を表現するのは難しいことでした。すべてのリ ファレンスはシンボリックでなければならず、シンボルテーブルのエントリでは なく、特定の変数を参照したいような場合にも大変だったからです。Perl 5 は、 変数へのシンボリックリファレンスを使い易くしただけではなく、どんなデータ にも「ハード」リファレンスが行なえるようにしました。任意のスカラがハード リファレンスを保持することができます。スカラは、配列やハッシュの一部でも ありますから、配列の配列、ハッシュの配列、配列のハッシュ、関数のハッシュ の配列といったものが簡単に作れるようになりました。
ハードリファレンスは賢く、実際に参照されている数を管理していて、その数が
0 になれば、自動的に解放を行ないます。そのものがオブジェクトであるときに
は、デストラクタが動作します。オブジェクトについてより詳しくは、
See section オブジェクト,を参照してください。(ある意味では、Perl のすべてがオ
ブジェクトですが、通常、クラスパッケージ内で公に bless
されている
ものへのリファレンスに対して、この用語を用います。)
ファイルシステム上でのシンボリックリンクが、単にファイルの名前を持ってい るだけであるのと同様に、シンボリックリファレンスは、変数の名前を保持しま す。`*glob' の記法は、シンボリックリファレンスの 1 種です。ハードリ ファレンスは、ファイルシステム上のハードリンクに似ており、名前によらず、 基本となる同一のオブジェクトに到達する方法を与えるものです。
Perl では、「ハード」リファレンスは簡単に使えます。これを覆すような原則 は、1 つだけです。Perl は、暗黙の参照や被参照を行ないません。スカラがリ ファレンスを保持しているときも、必ずスカラとして動作します。明示的に被参 照を指示しない限り、そのスカラが魔法のように配列やハッシュとなることはな いのです。
Go to the first, previous, next, last section, table of contents.