It's for this task that I wrote
Sub::WrapPackages, although right now you'll still have to write a bit of code to make it do exactly what you want. The Log::FunctionCalls module that was going to depend on it has been on my to-do list for, umm, far too long. Sorry.