sub trim { $_ = $_[0]; # Assigns to $_, but $_ is aliased to " abc ". s/^\s+//g; s/\s+$//g; return $_; } # Fix: # sub trim { # for ($_[0]) { # foreach (unlike while) localizes the loop var. # s/^\s+//g; # s/\s+$//g; # return $_; # } # } print trim($_) for " abc ", " def ", " ghi "