use strict; use warnings; use Data::Dump::Streamer; my %hash = ( doubleCheeseBurger => 'burger', cheeseBurger => 'burger', cheeseSandwich => 'sandwich', tomatoSandwich => 'sandwich', ); my %rHash; push @{$rHash{$hash{$_}}}, $_ for keys %hash; Dump (\%hash, \%rHash);