c:\@Work\Perl>perl -wMstrict -le "use Test::More 'no_plan'; use Test::NoWarnings; ;; my $metadata = qr{ < [^>]* > }xms; ;; for my $ar_vector ( [ 'somewordaar another word', 'somewordaar another word', ], [ 'awordaa another word', 'aworda another word', ], [ 'wordsandmorewordsaa', 'wordsandmorewordsa', ], ) { my ($s, $expected) = @$ar_vector; $s =~ s{ aa (?! $metadata* r) }{a}xmsg; is $s, $expected, qq{'$expected'}; } " ok 1 - 'somewordaar another word' ok 2 - 'aworda another word' ok 3 - 'wordsandmorewordsa' ok 4 - no warnings 1..4