#my $myhash; #build_hash($myhash); my $myhash = build_hash(); print Dumper($myhash); ## shows %myhash to be empty sub build_hash { my $href_ref; #my %results; my $sth = $dbh->prepare( $query ); $sth->execute(); # Get all records as array reference of hash references. my $res = $sth->fetchall_arrayref({}); map { $hash->{$_+1} = $res->[$_] } (0 .. @$res-1); #my $ct = 0; #while (my $tmp_href = $sth->fetchrow_hashref) { # $ct++; # $results{$ct} = $tmp_href; #} #%{ $href } = %results; ## also tried Storable's dclone(), but same results ## $href = dclone(\%results); print Dumper($href); ## prints desired results return $href; }