Although I like the Devel::Trace
module that others have suggested, I sometimes find it too verbose. Last week I used Sub::WrapPackages
to log subroutine calls within certain packages, as well as their input and output. You could also use Aspect
hooks to provide similar functionality.