else { my $id = $$item->id; print "printing the item id\n"; print "$id\n"; $SQL = qq[SELECT u.puid, up.prod_id FROM users u, user_products up WHERE ((u.puid = up.puid) AND (u.parent_puid = $id) AND (up.from_date < SYSDATE) AND (up.to_date IS NULL OR up.to_date > SYSDATE))]; } my @RETVAL = my_execer($SQL); print "Hey I got something back!" if $#RETVAL > 0; print 'I got this back\n", Dumper(\@RETVAL); ${$item}->subs(@RETVAL); # <-- here is problem I think print Dumper $$item; foreach my $subitem ($$item->subs) { find_subs(\$subitem); } return $item;