in reply to
How to write a Mixin without Exporter mess?
Considering that Perl doesn't have private methods, the breaking of encapsulation happens the moment you decide to call a sub as a module which should be hidden. After all, if it's hidden, you certainly don't want it to be masked, whether intentionally, or by accident; therefore, there is no reason to call frobnerize as a method. In fact, calling it as a sub is wrong, given your constraints. Call it as a sub - after all, you want it to act as a sub.