Some options (in no particular order):
- Use a proper OO language ;-)
- Wait for Perl 6
- Use inside out objects (for me, the neatest discovery from perlmonks so far - ++Abigail-II).
- Hide your objects implementation behind a proxy object (Class::Delegation is handy for this sort of thing).
- Document that you use a hash. Document the slot(s) that you use. One idiom that I've seen a few times is to do it as $object->{CLASS_NAME}->{SLOT_NAME}
Any more for any more?