#!/usr/bin/perl
use strict;
use warnings;
use Data
::Dumper qw(Dumper
);
sub join_by_value {
my ($hash) = @_;
my %result = ();
while (my ($key, $value) = each %$hash) { push @{$result{$value}}, $key; }
}
my %h = (
'qwe' => 'q1',
'asd' => 'q2',
'zxc' => 'q3',
'vbn' => 'q2',
'rty' => 'q1',
'fgh' => 'q3'
);
my %joined = join_by_value(\%h);
IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRGF0YTo6RHVtcGVyIHF3KER1bXBlcik7CgpzdWIgam9pbl9ieV92YWx1ZSB7CiAgbXkgKCRoYXNoKSA9IEBfOwoKICBteSAlcmVzdWx0ID0gKCk7CiAgd2hpbGUgKG15ICgka2V5LCAkdmFsdWUpID0gZWFjaCAlJGhhc2gpIHsKICAgIHB1c2ggQHskcmVzdWx0eyR2YWx1ZX19LCAka2V5OwogIH0KCiAgcmV0dXJuICVyZXN1bHQ7Cn0KCm15ICVoID0gKAogICdxd2UnID0+ICdxMScsCiAgJ2FzZCcgPT4gJ3EyJywKICAnenhjJyA9PiAncTMnLAogICd2Ym4nID0+ICdxMicsCiAgJ3J0eScgPT4gJ3ExJywKICAnZmdoJyA9PiAncTMnCik7CgpteSAlam9pbmVkID0gam9pbl9ieV92YWx1ZShcJWgpOwpwcmludCBEdW1wZXIoXCVqb2luZWQpOwo=