my @words = qw( foo bar ); while (my $line = ) { chomp $line; my @missing = grep {$line !~ $_} @words; printf "line: %-10s; missing: %s\n", $line, join ',', @missing; } __DATA__ foo bar foo bar #### use List::Util qw( first ); my @words = qw( foo bar ); while (my $line = ) { chomp $line; my $missing = first {$line !~ $_} @words; printf "line: %-10s; missing: %s\n", $line, $missing; } __DATA__ foo bar foo bar