use strict; use warnings 'all'; use Benchmark 'cmpthese'; $::a = "foo-bar"; cmpthese -5 => { sub => sub {$::a =~ /([-])/}, str => '$::a =~ /([-])/', }; __END__ Benchmark: running str, sub for at least 5 CPU seconds... str: 5 wallclock secs ( 5.34 usr + 0.00 sys = 5.34 CPU) @ 390154.68/s (n=2083426) sub: 5 wallclock secs ( 5.13 usr + 0.00 sys = 5.13 CPU) @ 282139.18/s (n=1447374) Rate sub str sub 282139/s -- -28% str 390155/s 38% --