use strict; use warnings; my $re = qr{ ^ (?=.*foo) (?=.*bar) }x; while (my $line = ) { print $line if $line =~ $re; } __DATA__ foo bar foo bar bar foo abc foo bar