use strict; use warnings; use 5.014; # s///r use Benchmark 'cmpthese'; my @a = map { ( 'a' x 123 ) . ( ' ' x rand 2 ) . ( "\n" x rand 2 ) } 0 .. 999; cmpthese -1, { usual => sub { my @ret = map { s/\s*$//r } @a; \@ret }, better => sub { my @ret = map { s/.*\S\K\s*$//sr } @a; \@ret }, unpack => sub { my @ret = map { unpack 'A*', $_ } @a; \@ret }, }; __END__ Rate usual better unpack usual 159/s -- -88% -95% better 1284/s 707% -- -56% unpack 2899/s 1722% 126% --