Encapsulation
An object can always be dereferenced like its underlying data structure, by any part of your application.
Objects in perl are only encapsulated by common agreement.
Only an object's methods should access its data directly; it may be useful to make the object use its own accessors too.
If you have to violate encapsulation, then you're either using the object incorrectly, or you've made a bad design decision.