I've never used
Sub::Compose in production, but you said that you're doing this for debugging purposes, so is that really a concern?
As for Class::MOP, methods are subroutines. Subroutines are methods of their package. As for the MOP concern, you're doing this for debugging purposes. Does it really matter how it gets done?
Also, I thought of another thing - this idea is also called Aspect-Oriented Programming and there's AOP on CPAN.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?