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; }