If you're asking how to write a function that can process either a scalar or a list of values (operating on each value in the list in turn) and the function returns EITHER a scalar OR a list see the Camel book for 'wantarray' function. Here's a quick example for you:
# 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__
Hope this answers your question.
In reply to Re: Should we handle multiple arguments as a list?
by aquacade
in thread Should we handle multiple arguments as a list?
by John M. Dlugosz
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |