否定の先読みなんかせんでも
print ‘foobar’ if /(?:foo.*?bar|bar.*?foo)/ ;
で良いんじゃねーのか