my ($key, $val) = 'MYKEY=MYVAL=2' =~ /^([^=]*)=(.*)/s; my ($key, $val) = split m{=(?=.*=)}, q{MYKEY=MYVAL=2}; #### use strict; use warnings; use Benchmark q{cmpthese}; my $rsMatch = sub { my ($key, $val) = q{MYKEY=MYVAL=2} =~ /^([^=]*)=(.*)/s; return [$key, $val]; }; my $rsSplit = sub { my ($key, $val) = split m{=(?=.*=)}, q{MYKEY=MYVAL=2}; return [$key, $val]; }; cmpthese(-5, { Match => $rsMatch, Split => $rsSplit }); #### Rate Split Match Split 26064/s -- -8% Match 28250/s 8% --