package MyDB::Audit; use parent qw( DBIx::Class ); use strict; use warnings; sub update { my $self = shift; return $self->next::method(@_) if some_reason_not_to_log_this_one($self->table); my %data = $self->get_dirty_columns; _log_changed_data(\%data); $self->next::method(@_); } 1;