use strict; use warnings; use Data::Dumper; my %hash= (10=>1, 20=>2, 30=>1, 40=>2); my %rhash; map {$rhash{$hash{$_}} += $_} keys %hash; print Dumper (\%hash); print Dumper (\%rhash); #### $VAR1 = '%hash'; $VAR2 = { '40' => 2, '30' => 1, '10' => 1, '20' => 2 }; $VAR1 = '%rhash'; $VAR2 = { '1' => 40, '2' => 60 };