I have an array of objects. How can iterate though it getting the value of object properties to print or to use? I believe my referencing is wrong on this example. If the objects are replaced with anonymous hashes then this work. Objects are anonymous hashes so I don't know why this doesnt
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";
}