#!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all); my $a = 'a' x 1_000; my @x = ( " $a ", "$a ", $a, " $a" ); cmpthese(-5, { single => sub { for my $s (@x) { my $x = $s; $x =~ s/^\s+|\s+$//g; } }, double => sub { for my $s (@x) { my $x = $s; $x =~ s/^\s+//; $x =~ s/\s+$//; } }, trick => sub { for my $s (@x) { my $x = $s; s/^\s+//, s/\s+$// for $x; } }, capture => sub { for my $s (@x) { my $x = $s; $x =~ s/\A\s*(.*?)\s*\z/$1/ } }, kramercap => sub { for my $s (@x) { my $x = $s; ($x) = $x =~ /^\s*(.*?)\s*$/ } }, } );