in reply to characterstics of private in perl

While this is not something I've had much (any) personal practice with, I recall from reading about it, in Damian's excellent book (Object Oriented Perl, esp. chapter 11), that you can effectively "hide" object data by using closures; e.g.:
{ my $object_data; sub _get_data { return $object_data; } }
The "_get_data()" sub can be called by various methods defined elsewhere in this object's package, and when it's called, the content of $object_data will be returned. But that scalar variable is out of scope, hence inaccessible, for everything but "_get_data()".