umhmm you got my typo. i accidentally used $string instead of $str in my post first. that explains the high rates for the regex solution.
here is the timing with the typo corrected:
Rate split_pos grep_split substr_map regexo regex subst
+r_loop unpack
split_pos 5587/s -- -65% -69% -76% -77%
+ -79% -81%
grep_split 15974/s 186% -- -12% -32% -34%
+ -40% -45%
substr_map 18051/s 223% 13% -- -23% -26%
+ -32% -38%
regexo 23474/s 320% 47% 30% -- -3%
+ -12% -20%
regex 24272/s 334% 52% 34% 3% --
+ -9% -17%
substr_loop 26596/s 376% 66% 47% 13% 10%
+ -- -9%
unpack 29240/s 423% 83% 62% 25% 20%
+ 10% --
--
"WHAT CAN THE HARVEST HOPE FOR IF NOT THE CARE OF THE REAPER MAN"
-- Terry Pratchett, "Reaper Man"