tie関数とは
説明するのが大変なので、どうしようかな・・・と思っていたら、以下のページを見つけました。
ようは、タイ変数を宣言したり、参照したり、代入したり・・・。
すると、裏で処理が動き、オブジェクトをコンストラクトしたり、とある処理結果が参照できたり、代入したものに対応したものを格納出来たりする。
データベースでのトリガーのようなものかな、たぶん。
tie関数の使い方
tie タイ変数, クラス名, コンストラクタの引数リスト
ちなみに、リターン値はオブジェクトが返る。後からtied関数で取得することも出来る。
tie関数使用例ソース
use Tie::Expression; tie my %expression, 'Tie::Expression'; print "PI = $expression{ 4 * atan2(1,1) }.\n";http://blog.livedoor.jp/dankogai/archives/51074461.html
tieするクラス例ソース
package Tie::Expression; use warnings; use strict; our $VERSION = sprintf "%d.%02d", q$Revision: 0.1 $ =~ /(\d+)/g; sub TIEHASH($) { bless \eval { my $scalar }, shift } sub FETCH($$) { $_[1] } 1;http://blog.livedoor.jp/dankogai/archives/51074461.html
タイ変数を宣言する時に指定する(tieする)クラスには、以下のメソッド名のメソッドを用意する。
- TIEHASH - ハッシュのタイ変数のコンストラクタ
- TIEARRAY - 配列のタイ変数のコンストラクタ
- TIESCALAR - スカラーのタイ変数のコンストラクタ
- FETCH - 参照の時、起動される処理
- STORE - 代入の時、起動される処理
- 他にもあります。
以下の4種類のタイ変数があるらしい。
尚、詳しくは、ラクダ本を参照のこと。