use strict; use warnings; while (){ chomp; my @ele = split /\s/,$_; #### use strict; use warnings; my %res; while (){ chomp; my @ele = split /\s/,$_; push @{ $res{"$ele[1] $ele[2]"} }, $ele[0]; } __DATA__ 1 monkey cow hammer nail 2 monkey sheep hammer nail 3 dog cat hammer nail 4 monkey cow hammer nail #### foreach my $key (keys %res){ if ($key =~ /monkey/) { print "monkey [occurence in $key] found in IDs:", (join ', ', @{$res{$key}}), "\n";