Вы можете использовать глаголы SKIP и FAIL.
#! /usr/bin/perl
use warnings;
use strict;
use Test::More tests => 7;
my $regex = qr/big\s*dog(*SKIP)(?!)|dog/;
unlike 'bigdog', $regex;
unlike 'big dog', $regex;
unlike 'big dog', $regex;
unlike 'cat', $regex;
like 'dog', $regex;
like 'small dog', $regex;
like 'medium dog and big dog', $regex;
qr/(?<!big)\s*dog/
проблематично, так как
big dog
^
|
matches here: is not preceded by "big" but "big "