How do I access a class variable from Obj.pm from within Obj::Foo.pm?
in reply to Designing an OO program with multiple inherited classes
The simple answer is (or should be), you don't - you should use an accessor method on the class instead.
...Obj is not a type of Foo or Bar; instead, Foo and Bar are parts of Obj...
With that one observation, you have both hit the nail squarely on the head and also gone some way to answering your own question viz: these days the preference is for composition/aggregation (see here for a discussion of the terms aggregation and composition) over inheritance.
A user level that continues to overstate my experience :-))