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]; }
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"; }
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
Section 2.1.
Get Perl Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.