今更DBICではなくCDBIの話なのですが、今までdeflateの使い方というか意味を激しく勘違いしてました。 inflateは、引いてきたレコードのカラムの値をオブジェクトでラップするために使います。これは知っていたのですが、deflateは関数をなにも指定しないときに呼ばれる関数だと思っていました。(今思うとかなり恥しい…)しかし、実際のdeflateの意味はまったく違うというのがわかりました。 結論から言うと、deflateはレコードをcreateするときに発動するもので、deflateを設定したカラムに あるオブジェクトを渡すとそのインスタンスに対してdeflateで指定した関数もしくはcoderefが呼ばれるという仕組みのようです。 つまり下記のようなhas_aを定義したFooというデータクラスがあったとして __PACKAGE__->has_a( dt => 'Time::Pi