my %hash1 = ( foo => 'bar' ); my %hash2 = ( quz => 'baz' ); $hash1{somekey} = \%hash2; use Data::Dumper; print Dumper(\%hash1); print Dumper( $hash1{somekey}{quz} ); __END__ $VAR1 = { 'foo' => 'bar', 'somekey' => { 'quz' => 'baz' } }; $VAR1 = 'baz'; #### use Data::Dump; my %hash1 = ( foo => 'bar' ); my %hash2 = ( quz => 'baz' ); # Case 1 %hash1 = (%hash1, %hash2); # OR $hash1{$_} = $hash2{$_} for keys %hash2; dd \%hash1; # { foo => "bar", quz => "baz" } # Case 2 %hash1 = %hash2; dd \%hash1; # { quz => "baz" }