package Node; use strict; sub new { my $proto = shift; my $class = ref($proto) || $proto; my $self = {}; $self->{NODES} = []; $self->{TITLE} = undef; bless($self,$class); return $self; } sub title { my $self = shift; if (@_) { $self->{TITLE} = shift; } return $self->{TITLE}; } sub add { my $self = shift; push(@{$self->{NODES}},shift); } sub nodes { my $self = shift; return @{$self->{NODES}}; } 1; # ------- #!/usr/bin/perl -w use strict; use Node; my $parent = Node->new(); $parent->title("Parent"); my $child1 = Node->new(); $child1->title("Child 1"); $parent->add($child1); my $child2 = Node->new(); $child2->title("Child 2"); $parent->add($child2); foreach my $ref ($parent->nodes) { print $ref->title; }