package TreeNode; use strict; sub new { my $caller = shift; my $class = ref($caller) || $caller; #the instance data is stored in an anonymous hash my $self = { TreeNodes => '@' # Array of TreeNodes }; bless ($self, $class); return $self; } sub AddNode { my $self = shift; # Create a new instance of TreeNode my $newNode = TreeNode->new(); # Add new instance to Array of TreeNodes push( @{$self->{TreeNodes}}, $newNode ); # This goes wrong! } 1; # so the require or use succeeds