#!/usr/bin/perl my @words = qw(we love); while () { # all search words must appear, but order is irrelevant my $found = 0; for my $search (@words) { $found = /\Q$search/i; last unless $found; } print if $found; } __DATA__ foo we love bar love we foo bar foo love bar we foo we bar love foo bar #### foo we love bar love we foo bar foo love bar we #### open my $fh, "<", $DataIn or die "Couldn't open '$DataIn': $!"; while (<$fh>) { ...