if (*{"GreenPartyDB::Database::${table}::${hook}"}{CODE}) { my $old = *{"GreenPartyDB::Database::${table}::${hook}"}{CODE}; my $new = *{__PACKAGE__."::${prefix}${hook}"}{CODE} *{"GreenPartyDB::Database::${table}::${hook}"} = sub { $_[0]->$old( @_[ 1 .. $#_ ] ); $_[0]->$new( @_[ 1 .. $#_ ] ); }; } else { *{"GreenPartyDB::Database::${table}::${hook}"} = *{__PACKAGE__."::${prefix}${hook}"}{CODE}; }