Enter sexeger.
Add this to Abigail's benchmark.
aristotle => 'foreach my $f (@files) {
my ($fn) = reverse($f) =~ m!^(.*?)/?!s;
$fn = reverse $fn;
}',
Rate markm abigail markm2 aristotle
markm 39625/s -- -56% -58% -61%
abigail 89688/s 126% -- -4% -11%
markm2 93877/s 137% 5% -- -7%
aristotle 100885/s 155% 12% 7% --
Reversing the string (twice!) may be costly, but the simplicity of the regex offsets this. Note that
[^/]+ would have been
much slower.
.*? has been treated to special optimizations.
Makeshifts last the longest.