Give Tree::DAG_Node a look. use Tree::DAG_Node; my $root = Tree::DAG_Node->new(); $root->name("I'm the tops"); my $new_daughter = $root->new_daughter; $new_daughter->name("More"); It includes accessor methods 'mother' and 'daughters', etc.