$data =~ s/^\s*//;
$data =~ s/\s*$//;
####
use Benchmark;
sub dotstar {
my $data = $testdata;
$data =~ s/^\s*(.*?)\s*$/$1/;
return $data;
}
sub first_n_last {
my $data = $testdata;
$data =~ s/^\s*//;
$data =~ s/\s*$//;
return $data;
}
sub first_n_last_must_match {
my $data = $testdata;
$data =~ s/^\s+//;
$data =~ s/\s+$//;
return $data;
}
$testdata = ' ' x 200 . "abcd" x 20 . " " x 200;
timethese( 100000,
{
dotstar => '&dotstar',
first_n_last_1 => '&first_n_last',
first_n_last_2 => '&first_n_last_must_match'
}
)
####
Benchmark: timing 100000 iterations of dotstar, first_n_last_1, first_n_last_2...
dotstar: 7 wallclock secs ( 6.91 usr + 0.02 sys = 6.93 CPU) @ 14430.01/s (n=100000)
first_n_last_1: 4 wallclock secs ( 4.21 usr + 0.00 sys = 4.21 CPU) @ 23775.56/s (n=100000)
first_n_last_2: 2 wallclock secs ( 1.30 usr + 0.00 sys = 1.30 CPU) @ 76804.92/s (n=100000)