$_ = "it's 94% fat-free!"; # a string that should match # the following code works but the logic is outside the RE print "match\n" if (/(\d{1,3})%/, $1>91); # the following code also works but is offensive print "match\n" if /(\d{1,3})%(?(?{$1>91})(?:.*)|(?!.*))/;