in reply to Sub cannot return an array?
in thread Dereference an array reference
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
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: Sub cannot return an array?
by dvergin (Monsignor) on Apr 20, 2001 at 01:25 UTC | |
by tye (Sage) on Apr 20, 2001 at 01:32 UTC |