If it is speed you are after, you can always put on your C hat:
use Benchmark;
use Inline C;
timethese (1000000, {
'regex' => q{
my $foo = "test ";
$foo =~ s/\s+$//;
},
'inline' => q{
my $foo = "test ";
rmsp($foo);
}
});
__END__
__C__
void rmsp(char * str) {
int i = strlen(str) - 1;
while( i >= 0 && str[i] == ' ' ) {
str[i--] = '\0';
}
}
Results:
Benchmark: timing 1000000 iterations of inline, regex...
inline: 4 wallclock secs ( 4.39 usr + 0.03 sys = 4.42 CPU)
regex: 8 wallclock secs ( 6.84 usr + 0.03 sys = 6.87 CPU)