A quick CPAN search for "interface" brings up the
interface module. That looks promising. It references
Class::Contract, which may be a little too much koolaid for you, but it would definitely do what you're looking for. :-)
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?