in reply to Accessing keys through values

as long as all the values in %hash are unique (or if you don't mind loosing keys that have repeated values), you can use:
my %rhash = reverse %hash; my $key = $rhash{$value};
and if you have repeated values:
my %rhash; for (keys %hash) { no warnings 'uninitialized'; push @{$rhash{$hash{$_}}}, $_; } print("$value keys: ", join(', ', @{$rhash{$value}}), "\n");