use strict; use warnings; while () { print "matched $_" if /^(?!cat\b).*(?=\bdog$)/; } __DATA__ cat dog dog cat catnip dogbone aardvark ant frog cat dog can of worms