use strict; use warnings; use Benchmark 'cmpthese'; my $sz = ( shift || 10 ) - 4; my $X = 'N' . 'x' x $sz . '000'; my $Y = 'N' . 'x' x $sz . '001'; print("X = $X\n"); print("Y = $Y\n"); print("\n"); cmpthese( -1, { '/^N(?!.*00$).*$/ failure' => sub { scalar $X =~ /^N(?!.*00$).*$/ }, '/^N(?!.*00$).*$/ success' => sub { scalar $Y =~ /^N(?!.*00$).*$/ }, '/^N(?!.*00$)/ failure' => sub { scalar $X =~ /^N(?!.*00$)/ }, '/^N(?!.*00$)/ success' => sub { scalar $Y =~ /^N(?!.*00$)/ }, '/^N.*(? sub { scalar $X =~ /^N.*(? sub { scalar $Y =~ /^N.*(? sub { scalar $X =~ /^N.*(?!00)..$/ }, '/^N.*(?!00)..$/ success' => sub { scalar $Y =~ /^N.*(?!00)..$/ }, });