in reply to getting hash key with value

This will only work is the values are unique but all you need to do is create a reversed hash lookup table and use that:

my %h = qw( 1 2 3 4 5 6 ); my %rev_h = reverse %h; use Data::Dumper; print Data::Dumper::Dumper(\%h,\%rev_h); __DATA__ $VAR1 = { '1' => '2', '3' => '4', '5' => '6' }; $VAR2 = { '6' => '5', '4' => '3', '2' => '1' };

If you can't guarantee the values are unique then you have to iterate. Use grep:

my @keys = grep{ $hash{$_} eq $find } keys %hash;