use strict; use warnings; use Benchmark q{cmpthese}; my $rsIndex = sub { my $str = q{MYKEY=MYVAL=2}; my $pos = index $str, q{=}; my $key = substr $str, 0, $pos; my $val = substr $str, $pos + 1; return [$key, $val]; }; 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, { Index => $rsIndex, Match => $rsMatch, Split => $rsSplit });