Thanks to all, for all the help (I have been learning perl for a couple of months - all prior work procedural, and like it). I did not realise I would need to bless slices of an array to. I don't want to move the sql statement outside of the package so it calls the bless function six times (correct me if I am wrong) but have it all contained (except the where part of the query) in the package. So I followed your code, changing
return bless \@objref, $class; to $self = [@objref]; return bless $self, $class; and changed the sub to sub get_desc() { my ($self, $idx) = @_ ; return $self->[$idx]{_description} ; }
calling code from
my $item = Item::Item->new( "10056" ); print $item->get_desc(0), "\n";
it works!. However when I try the next entry (the sql statement returns 6 rows)
my $item = Item::Item->new( "10056" ); print $item->get_desc(1), "\n";
I get: Use of uninitialized value in print at testitem.pl line 17. In my while statement I assign each row to the $objref[$i++] slice. The $self = [@objref] should have the whole array reference (handle ? - not sure) and so why does it not work? More reading to do...
.In reply to Re^2: bless array of hashes correct get method wrong
by peterb
in thread bless array of hashes correct get method wrong
by peterb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |