5 - Sub::WrapPackages Attach subs as pre/post-conditions to existing subs use Sub::WrapPackages ( packages => [qw(User)], # wrap all User::* pre => sub { print "called $_[0] with params ". join(', ', @_[1..$#_])."\n"; }, post => sub { print "$_[0] returned $_[1]\n"; } );