use warnings; use strict; my %env= %{e ()}; $|=1; while (my ($var, $val) = each %env) { print "(hash) $var=$val\n"; } my $ref = e (); while (my ($var,$val) = each %$ref) { print "(ref) $var=$val\n"; } sub e { my %result=(A=>1,B=>2); wantarray ? each %result : \%result; } #### (hash) A=1 (hash) B=2 (ref) A=1 (ref) B=2