##
my %reverseHash;
while(($key, $value)=each %hash)
{
$processedValue = someFunc($value);
$reverseHash{$processedValue} = $key;
}
my @keys = values %reverseHash;
my %newHash;
@newHash{@keys} = @hash{@keys};
####
use Data::Dumper;
my %hash = (
a => [1, 2],
b => [2, 3],
c => [1, 2]
);
my %reverseHash = map { Dumper($hash{$_}) => $_ } keys %hash;
%hash = map { $_ => $hash{$_} } values %reverseHash;
print Dumper \%hash;