tieは、スカラー・配列・ハッシュ・ファイルハンドルを適切な名前を持ったメソッドを提供するクラスと結び付け、これらの変数に対する通常の処理を横取りしてエミュレートすることができる。
例えば、dbmopenのようにハッシュ変数とデータベースを結び付けるような処理が可能。
tie VARIABLE, CLASSNAME, LIST; # VARIABLEをCLASSNAMEに結び付ける $object = tied VARIABLE; # tied関数でオブジェクトの取り出しができる
配列のタイ変数
主なメソッドは、以下の通り。
- TIEARRAY(LIST) : コンストラクタ
- FETCH(INDEX)
- STORE(INDEX, VALUE)
- DESTROY
- FETCHSIZE
- STORESIZE(COUNT)
- EXTEND(COUNT)
- EXISTS(INDEX)
- DELETE(INDEX)
- CLEAR
- PUSH(LIST)
- POP
- SHIFT
- UNSHIFT(LIST)
- SPLICE(OFFSET, LENGTH, LIST)
Tie::Array/Tie::StdArrayを継承すれば、再定義したいメソッドのみ実装すればよい。
ハッシュのタイ変数
主なメソッドは、以下の通り。
- TIEHASH(LIST) : コンストラクタ
- FETCH(KEY)
- STORE(KEY, VALUE)
- DELETE(KEY)
- CLEAR
- EXISTS(KEY)
- FIRSTKEY
- NEXTKEY(PREVKEY)
- DESTROY
Tie::Hash/Tie::StdHashを継承すれば、再定義したいメソッドのみ実装すればよい。
ファイルハンドルのタイ変数
主なメソッドは、以下の通り。
- TIEHANDLE(LIST) : コンストラクタ
- PRINT(LIST)
- READLINE
- GETC
- OPEN(LIST)
- CLOSE
- SEEK(LIST)
- TELL
- PRINTF(LIST)
- READ(LIST)
- WRITE(LIST)
- EOF
- BINMODE(DISC)
- FILENO
- DESTROY
補足で勉強しました。
- 洗練されたPerl: タイ変数 (Tied variables)
- プログラミングPerl(VOLUME 1) 14章 タイ変数