#!/usr/bin/perl -w
use strict;
while (<DATA>) {
chomp;
print;
print /(?=.*foo)(?=.*bar)/s ? "\t match \n" : "\t no match \n"
+;
}
__DATA__
foo bar
bar foo
foo
bar
baz
barbazfoo
foofoobar
gives output:
foo bar match
bar foo match
foo no match
bar no match
baz no match
barbazfoo match
foofoobar match
hth!
andy.
Update re jeroenes's points below:
1. I used /s to make '.' match any character, in case fsn's *real* strings weren't all in one line.
2. Yes, or even print grep /(?=.*foo)(?=.*bar)/, <DATA> ; , but I wanted to print the failed matches too. Perhaps print map{ chomp; /(?=.*foo)(?=.*bar)/?"$_ yes \n":"$_ no \n"} <DATA> ;
;)