my @Book = (); my @MatchFound = (); my %seen; foreach (@Book) { if ( /\bPerl\b/i && /\bMonks\b/i && /\bRule\b/i ) { push @MatchFound, $_ unless $seen{$_}++; } }