Описанный в совете пример работает быстрее для относительно больших строк.
s/^\s*//;$str =~ s/\s*$//; быстрее в случае небольших строк (примерно до 50 символов).
$str =~ s/^\s*(.*?)\s*$/$1/;' - наименее оптимальный вариант.
$str =~ s/^\s*//;$str =~ s/^(.*[^\s])\s*$/$1/; - комбинированный вариант, очень неплохой результат.
тестировал так:
#!/usr/bin/perl
use strict;
use Benchmark;
timethese(100000,
{
test1 => 'my $str=" test "; $str =~ s/^\s*([^\s]?.*)$/$1/;$str =~ s/^(.*[^\s])\s*$/$1/;',
test2 => 'my $str=" test "; $str =~ s/^\s*//;$str =~ s/\s*$//;',
test3 => 'my $str=" test "; $str =~ s/^\s*(.*?)\s*$/$1/;',
test4 => 'my $str=" test "; $str =~ s/^\s*//;$str =~ s/^(.*[^\s])\s*$/$1/;'
}
);
|