Take a look at what I do in Sub::Compose. I'm also working through the implications of doing something similar in DBM::Deep. You're welcome to join the discussions.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?