package My::DBI; use base 'Class::DBI::mysql'; sub setup { my $sub_class = shift; my $table = shift; $sub_class->set_up_table($table); for my $col_name ($sub_class->all_columns) { my $col_type = $sub_class->column_type($col_name); if($col_type eq 'date') { # customize accessor to do euro formatting my $real_accessor = "_${col_name}_accessor"; no strict 'refs'; *{$sub_class.'::'.$col_name} = sub { my $self = shift; if(@_) { # setting my $date = shift; if($date =~ m! (\d+) / (\d+) (?:/ (\d+) )+!x) { my $y = $3; $y += ($y < 70) ? 2000 : 1900 if($y < 100); $date = sprintf "%4d-%02d-%02d", $y,$2,$1; } return $self->$real_accessor($date); } else { my $date = $self->$real_accessor(@_); $date =~ s!(\d{4})-(\d\d)-(\d\d)!$3/$2/$1!; return $date; } } } } }