in reply to Hierarchical Data Structures

Here is a basic outline for one way to do it:

You can use Class::Struct to construct the basic "Player" object. Then the properties "Parent", and 3 "Child" player can each be assigned new Player objects. You can create traversal methods.