http://qs321.pair.com?node_id=228589


in reply to Re: Returning lists vs arrays
in thread Returning lists vs arrays

Your model is perhaps flawed. At no time does Perl "return" an "array".

A more accurate model is that Perl calls a subroutine with a flag that says "I want a scalar" or "I want a list". When the last expression of the subroutine is evaluated (such as for a return operator), that subroutine gets scalar or list eval context applied to it, as appropriate.

So, a subroutine returns a list or scalar. Always. It never returns an array. If you write return @a, it will return the length of array @a in a scalar context, or a list copied from the contents of @a in a list context. At no time has it "returned" the "array" @a.

Clear now?

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.