http://www.perlmonks.org?node_id=451567


in reply to Re: Differ. array and List
in thread Differ. array and List

No, there is no distinction in contexts, as far as return values from subroutines are concerned; I believe Larry Wall has admitted that the name really should be wantlist. The output is a list which can be used as-is or assigned to an array (or hash or whatever) if desired.

However, there are some subs which expect their arguments to be array variables (because the variable's data will be altered). Examples include pop() and shift().

--
[ e d @ h a l l e y . c c ]

Replies are listed 'Best First'.
Re^3: Differ. array and List
by Jasper (Chaplain) on Apr 26, 2005 at 15:57 UTC
    However, there are some subs which expect their arguments to be array variables (because the variable's data will be altered). Examples include pop() and shift().

    I think this is incorrect. Any list of arguments supplied to a subroutine are inserted into the array @_ and pop and shift handle that accordingly. There's no such thing as subs expecting array variables.
      Uh, write a Perl subroutine that works exactly like pop() without (1) taking a (@) prototype signature, and (2) expecting that $_[0] is an lvalue array reference. I'd like to see the code.

      --
      [ e d @ h a l l e y . c c ]

        Oops. I don't think I thought about what I was writing, and I certainly don't seem to have read what you wrote. However, from my (probably limited) understanding of @, \@ whatever prototyping, the context is relatively limited and has to emulate a function call. You can't use any of this for method calls, for example. I see what you mean, though.