s/^\s+(.*?)\s+$/$1/; # fails sometimes s/^\s*(.*?)\s*$/$1/; # succeeds, but slow s/^\s*(.*\S)\s*$/$1/; # fails sometimes s/^\s*//, s/\s*$//; # succeeds, but WHY use * ? s/^\s+//, s/\s+$//; # succeeds, but is it good?