use Data::Dumper; $h{a} = [qw/x y z/]; $h{b} = &{sub {\@_}}(@{$h{a}}); $h{a}->[0] = 'new_x_is_shared'; push @{$h{a}}, 'pusher_is_not_shared'; print Dumper $h{a}; print Dumper $h{b};