use Benchmark 'cmpthese'; use Regexp::Common 'whitespace'; my $f = ' this is a string with spaces to remove '; cmpthese(-3, { 'Regexp-Common' => sub { $_=$f; s/$RE{ws}{crop}//g; }, 'two-s///' => sub { $_=$f; s/^\s+//; s/\s+$//; }, 'one-s///' => sub { $_=$f; s/^\s+|\s+$//g; }, 's-capture' => sub { $_=$f; s/^\s*(.*?)\s*$/$1/; }, 's-capture2' => sub { $_=$f; s/^\s*(\S+(?:\s+\S+)?)?\s*$/$1/; }, 'm-capture' => sub { $_=$f; ($_) = /(\S+(?:\s+\S+)?)/; }, }); #### Rate Regexp-Common s-capture one-s/// s-capture2 m-capture two-s/// Regexp-Common 659/s -- -91% -93% -95% -96% -97% s-capture 7002/s 963% -- -21% -45% -59% -73% one-s/// 8857/s 1244% 26% -- -30% -48% -66% s-capture2 12699/s 1827% 81% 43% -- -26% -51% m-capture 17179/s 2507% 145% 94% 35% -- -34% two-s/// 25941/s 3837% 270% 193% 104% 51% --