# Trim beginning and trailing whitespace only sub trim { my @out=@_; # reassign so we don't change input values for (@out) { # loop and substitution are using default system variable $_ s/^\s+//; s/\s+$//; } # the return uses Perl's only trinary operator # COND ? THEN : ELSE # Was this subroutine called in list context or not? return wantarray ? @out : $out[0]; } # main program my @list=(' List 1 ',' List 2 ',' List 3 '); my $val=' Scalar '; print "'$_'\n" foreach (trim($val)); print "'$_'\n" foreach (trim(@list)); __END__