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。