Keep It Simple, Stupid | |
PerlMonks |
Re: Sub cannot return an array?by merlyn (Sage) |
on Apr 20, 2001 at 01:03 UTC ( [id://73994]=note: print w/replies, xml ) | Need Help?? |
The sub is always returning a scalar or a list. Never an array.
The context of the caller is provided to the last expression evaluated in the subroutine. That expression then evaluates to a scalar or list, and that scalar or list is returned. In your ret_array, a scalar context evaluation of @_ is clearly the number of elements of the _ array, while a list context evaluation is the current contents of the _ array. But it's not "returning" the array. It's returning a copy of the contents (as a list), or the count (as a scalar). Similarly, for the ret_list subroutine, a scalar context is passed down to the subroutine to cause the last element of that slice to be returned (as a scalar), or in a list context, the entire contents of the _ array are returned (as a list). Again, at no time is the "array" returned. You're either returning the last expression evaluated in a list context as a list, or the last expression evaluated in a scalar context as a scalar. -- Randal L. Schwartz, Perl hacker
In Section
Seekers of Perl Wisdom
|
|