use strict; use Test::More tests => 7; sub ungonk { local $_ = $_[0]; if (/^(foobar:(?:(?!gonk).){1,5})gonk/) { return $1 } else { return undef }; }; is ungonk('foobar:hellogonk'), 'foobar:hello'; is ungonk('foobar:gonk'), undef; is ungonk('foobar:higonk'), 'foobar:hi'; is ungonk('foobar:helloworldgonk'), undef; is ungonk('foobar:gonkgonk'), undef; is ungonk('foobar:gonkogonk'), undef; is ungonk('foobar:ogonkgonk'), 'foobar:o';