Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

How do I strip blank space from the beginning/end of a string?

by faq_monk (Initiate)
on Oct 08, 1999 at 00:20 UTC ( #602=perlfaq nodetype: print w/replies, xml ) Need Help??

Current Perl documentation can be found at perldoc.perl.org.

Here is our local, out-dated (pre-5.6) version:

Although the simplest approach would seem to be:

    $string =~ s/^\s*(.*?)\s*$/$1/;

This is unneccesarily slow, destructive, and fails with embedded newlines. It is much better faster to do this in two steps:

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

Or more nicely written as:

    for ($string) {
        s/^\s+//;
        s/\s+$//;
    }

This idiom takes advantage of the foreach loop's aliasing behavior to factor out common code. You can do this on several strings at once, or arrays, or even the values of a hash if you use a slide:

    # trim whitespace in the scalar, the array, 
    # and all the values in the hash
    foreach ($scalar, @array, @hash{keys %hash}) {
        s/^\s+//;
        s/\s+$//;
    }

Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
[tye]: no, thankfully (at least my version of Perl) has a different error for that.
[tye]: could be an unclosed m//, qr//, s///, or even q// (etc.) from earlier

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (11)
As of 2016-12-07 18:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (131 votes). Check out past polls.