Recipe 1.14. Trimming Blanks from the Ends of a String
Author: Tom Christiansen & Nathan Torkington
Date: 1999-07-02T01:29:20Z

#

| Chapter 1 Strings |

## 1.14. Trimming Blanks from the Ends of a String

### Problem

You have read a string that may have leading or trailing whitespace, and you want to remove it.

### Solution

Use a pair of pattern substitutions to get rid of them:

    $string =~ s/^\s+//;
    $string =~ s/\s+$//;

You can also write a function that returns the new value:

    $string = trim($string);
    @many   = trim(@many);

    sub trim {
        my @out = @_;
        for (@out) {
            s/^\s+//;
            s/\s+$//;
        }
        return wantarray ? @out : $out[0];
    }

### Discussion

This problem has various solutions, but this is the most efficient for the common case.

If you want to remove the last character from the string, use the `chop` function. Version 5 added `chomp`, which removes the last character if and only if it is contained in the `$/` variable, "`\n`" by default. These are often used to remove the trailing newline from input:

    # print what's typed, but surrounded by >< symbols
    while(<STDIN>) {
        chomp;
        print ">$_<\n";
    }

### See Also

The `s///` operator in perlre (1) and perlop (1) and the "Pattern Matching" section of Chapter 2 of Programming Perl; the `chomp` and `chop` functions in perlfunc (1) and Chapter 3 of Programming Perl; we trim leading and trailing whitespace in the `getnum` function in Recipe 2.1.

1.13. Escaping Characters |  | 1.15. Parsing Comma-Separated Data