package person; sub new { my ($class) = @_; my $self = { _id => undef, _name => undef, _scores => [] }; bless $self, $class; return $self; } sub id{ my ( $self, $id ) = @_; $self->{_id} = $id if defined($id); return $self->{_id}; } sub name{ my ( $self, $name) = @_; $self->{_name} = $name if defined($name); return $self->{_name}; } sub scores { my ( $self, @scores )= @_; if (@scores) { @{ $self->{_scores} } = @scores; }; return @{ $self->{_scores} }; } use strict; use warnings; use Data::Dumper; my %hash= () ; my $hash = undef, my $node; my @nodeArray= () ; sub get_array_hashes { my $node = eval{person->new();} or die ($@); $node->id(1); $node->name('bob'); $node->scores(['34','1','1',]); unshift(@nodeArray, $node ) ; $node = eval{person->new();} or die ($@); $node->id(2); $node->name('bill'); $node->scores(['3','177','12',]); unshift(@nodeArray, $node ) ; print "Test Array of hashes before return\n"; for my $item (@nodeArray) { print "Hash Value : $item->{name}\n"; } return \@nodeArray; } my @one = @{ get_array_hashes() }; #print "Test Array of hashes after return\n"; for my $item (@one) { print "Hash Value : $item->{version}\n"; }