in reply to Complex Objects

If you make an object from a hash ref (bless({}, $class)), you can treat the object like any other hash ref.

If you make an object from an array ref (bless([], $class)), treat the object like any other array ref.

Refer to perlobj, perldata and perlref, and come back with an attempt if you can't make it work.