If you want to make the regex solution run much more quickly, use Look Around Assertions in place of the capture and reinsert.
yieldscmpthese(0, { substr => sub { my @l = @list; substr $_, -2, 0, '.' for @l; }, regex => sub { my @l = @list; s/(..)$/.$1/ for @l; }, regex2 => sub { my @l = @list; s/(?=..)$/./ for @l; }, });
Rate substr regex regex2 substr 73.1/s -- -39% -71% regex 121/s 65% -- -52% regex2 250/s 242% 107% --
Update: As per JavaFan's comment, I had a typo in my sub. Replaced s/(?=..)$/./ with s/(?=..$)/./ which returns the correct result, but at substantially poorer performance.
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.
In reply to Re^2: Print Number With Implied Decimal Point
by kennethk
in thread Print Number With Implied Decimal Point
by j355ga
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |