use strict; # Using regex sub trimall_v1 { # Trims all extra whitespace from left, right and middle! my @out=@_; # Pass by value! for (@out) { s/^\s+//; s/\s+$//; s/\s+/ /g; } return wantarray ? @out : $out[0]; } # Using specialized split on ' ' and $_ sub trimall_v2 { # Trims all extra whitespace from left, right and middle! my @out=@_; # Pass by value for (@out) {$_= join ' ',split;} return wantarray ? @out : $out[0]; } my $val=" Scalar \r\r\n\t\t\n "; my @list=(" List\t\t\n 1 \n \n \n"," \t\t List 2 "," List\t\t\t\n 3\t\n\n\r "); print "'$_'\n" for (trimall_v1($val)); print "'$_'\n" for (trimall_v1(@list)); print "'$_'\n" for (trimall_v2($val)); print "'$_'\n" for (trimall_v2(@list)); __END__