|Think about Loose Coupling|
It's true that for both methods you need to code your constructors with a view to inheritance, but you have to do that when using fields also.
For the manually lock hash, you just have to test whether you are constructing a new instance or adding to an existing class, and in the latter case, unlock the hash, add you fields and re-lock. I admit that doesn't provide the _\w* is private behaviour.
For the blessed arrays, inheritance is messy. Hence my agreement with adrianh.
Basically, I have still to find the perfect combination for OO in Perl, but I don't have cause to make a great deal of use of it.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.
In reply to Re^3: Should I use Fields, InsideOuts, or Properties?