use strict; use warnings; use feature 'say'; use Benchmark 'cmpthese'; my $pat = qr/\d+/; my $s = '123abc' x 1e6; my $re = qr/\G $pat \D+ /x; cmpthese -1, { "o=0" => sub { 1 while $s =~ /\G $pat \D+ /gx }, "qr" => sub { 1 while $s =~ /$re/g }, "o=1" => sub { 1 while $s =~ /\G $pat \D+ /gxo }, }; #### Rate o=0 qr o=1 o=0 3.12/s -- -8% -59% qr 3.39/s 8% -- -55% o=1 7.55/s 142% 123% --