Class::DBIを使っているときに、ロジックが検索SQLとメソッドに別れてしまって非常に不便。例えば、「年収1,000万以上で身長が180cm以上の男性をAランクとする」と言うルールがある場合、検索ではSQLを使いたいので
if($is_rank_a){ $sql .= q/SEX = 1 and NENSYU >= 1000 and HEIGHT >= 180/; }
などと言うコードが出てくる。でも、これだとひとつひとつのオブジェクトがランクAかわからないので、このオブジェクトのメソッドには、
sub is_rank_a{ my $self = shift; return $self->sex == 1 && $self->nensyu >= 1000 && $self->height >= 180; }
などと言う、大変冗長なコードが出てくる。気持ち悪いッス。
この、"ルール"を抽象化して、それをperlのコードとしてもSQLとしても使えるようにするクラスがあれば便利ですね。もうすでにCPANにあるような気がするんですが、知ってる人が居たら教えてくださいm(_ _)m。