use strict; my(%hash1) = ( 'foo' => 'bar', 'bleh' => 'qwer', 'lala' => 'asdf' ); my(%hash2) = ( 'foo' => 'bvcx', 'bleh' => 'lkjh', 'lala' => 'iopj' ); my(%hash3) = map { $_ => [$hash1{$_}] } keys(%hash1); map { push(@{$hash3{$_}},$hash2{$_}); } keys(%hash2); foreach (keys(%hash3)) { print "$_ is\n"; map { print "\t$_\n"; } @{$hash3{$_}}; }