There are various ways of implementing "real" data hiding in Perl objects. One mode that has been floating around the Monastery for a while is "inside-out" objects. Two nodes that explain this pretty well (with code!) include
Class::InsideOut - yet another riff on inside out objects. and
Yet Another Perl Object Model (Inside Out Objects), or, straight from the horse's mouth,
Re: Tutorial: Introduction to Object-Oriented Programming. A different approach is described in
Protect your subs... from *EVIL*..