use Data::Dumper; my $t; my %a=('c'=> {rr=>$t=[4,5,6], # Notice use of $t for temp store ss=>$t}); # which gets assigned HERE .... print Dumper \%a; print qq( $_ = @{$a{c}->{$_}} \n) for qw(rr ss) ---- OUTPUT --- $VAR1 = { 'c' => { 'ss' => [ 4, 5, 6 ], 'rr' => $VAR1->{'c'}{'ss'} } }; rr = 4 5 6 ss = 4 5 6