cmpthese(-3, { cc => sub { "japhy{japhy}japhy" =~ /{[^}]*}/ }, ds => sub { "japhy{japhy}japhy" =~ /{.*?}/ }, }); Benchmark: running cc, ds, each for at least 3 CPU seconds... cc: 72937.13/s (n=223917) ds: 76422.67/s (n=229268) Rate cc ds cc 72937/s -- -5% ds 76423/s 5% -- cmpthese(-3, { cc => sub { "this is an amazingly long string" =~ /\s[^l]*l/ }, ds => sub { "this is an amazingly long string" =~ /\s.*?l/ }, }); Benchmark: running cc, ds, each for at least 3 CPU seconds... cc: 91565.26/s (n=282021) ds: 117002.10/s (n=390787) Rate cc ds cc 91565/s -- -22% ds 117002/s 28% --