my %hash = ( Key1 => 'Pigeon.Lion.Tiger.Elephant', Key2 => 'Pigeon.Lion.Tiger.Rabbit', Key3 => 'Pigeon.Lion.Tiger.Monkey', ); my %lookup = reverse %hash; while () { chomp; my ($value) = split; my $key = $lookup{$value}; print "$_ ($key)\n" if /SOME_DATA/ and defined $key; } __DATA__ Pigeon.Lion.Tiger.Elephant SOME_DATA Pigeon.Lion.Tiger.Lion SOME_DATA Pigeon.Lion.Tiger.Monkey SOME_DATA #### Pigeon.Lion.Tiger.Elephant SOME_DATA (Key1) Pigeon.Lion.Tiger.Monkey SOME_DATA (Key3)