$ perl -MBenchmark=cmpthese -le 'my $a; $_ = "abcdefghi"; cmpthese( 2_000_000, { "01 \$&" => sub { /def/; $a = $& } } )' Rate 01 $& 01 $& 1025641/s -- $ perl -MBenchmark=cmpthese -le 'my $a; $_ = "abcdefghi"; cmpthese( 2_000_000, { "02 substr" => sub { /def/; $a = substr( $_, $-[0], $+[0] - $-[0] ) }, "03 paren" => sub { /(def)/; $a = $1 } } )' Rate 02 substr 03 paren 02 substr 116822/s -- -89% 03 paren 1098901/s 841% --