|Think about Loose Coupling|
Rewriting sub code on import to add loggingby gryphon (Abbot)
|on May 13, 2008 at 23:00 UTC||Need Help??|
gryphon has asked for the
wisdom of the Perl Monks concerning the following question:
I've got an application with a handful of modules in an inheritance tree, with a single super-class above it all from which the other modules eventually inherit, directly or indirectly. What I'd like to do is add in every sub a call to a logging method without having lots of duplicated code. So I thought what might work is to use the super-class's import() to find all the subroutines within the package and rewrite them, adding the call. I've failed miserably.
Ultimately, here's what I'd like to have happen:
...gets rewritten to...
So far, this is what I've come up with (but I can't get it to work). This is import() from the super-class:
So part of the problem (apart from my inability to get this to work at all) is that the warn statements are outside the $code->() call. Is there a way I can append them inside the subroutine itself?