Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Sub cannot return an array?

by merlyn (Sage)
on Apr 20, 2001 at 01:03 UTC ( #73994=note: print w/replies, xml ) Need Help??


in reply to Sub cannot return an array?
in thread Dereference an array reference

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

Replies are listed 'Best First'.
Re: Re: Sub cannot return an array?
by dvergin (Monsignor) on Apr 20, 2001 at 01:25 UTC
    Great! Very helpful. So if I have this right, the list/scalar context provided by the context in which the sub is called is being applied inside the subroutine at the point that the return expression (whether specified with a 'return' or not) is being evaluated. (Not applied to the result of the sub after it springs to life at the point the sub is called.) Yes?

      Exactly.

              - tye (but my friends call me "Tye")

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://73994]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2020-11-24 17:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?