On Tue, 2002-09-24 at 10:27, Peter Haworth wrote:
> On 24 Sep 2002 05:21:37 -0400, Aaron Sherman wrote:
> > On Tue, 2002-09-24 at 01:46, Trey Harris wrote:
> > >   sub push(@target is rw, *@list);
> > 
> > Well, yes, but that wasn't the point. The C<*@list> will force array
> > flattening, thus
> > 
> >     push @a, [1,2,3], 4;
> > 
> > will (according to Larry's stated desire to unify arrays and references
> > to arrays in terms of behavior) result in four elements getting pushed
> > onto C<@a>, not two.
> 
> But the decision on how arguments get passed happens at compile time, not run
> time. At that point we can tell the difference between an explicit arrayref
> and a flattened array:

Again, we're wading into the waters of over-simplification. Let's try:

        sub foo1(){ my @foo=(1,2,3); return @foo; }
        sub foo2(){ my $foo = [1,2,3]; return $foo; }
        sub foo3(*@list) { print @list.length, "\n"; }
        @foo = (1,2,3);
        foo3(@foo, [1,2,3], foo2(), foo1());

Ok, so what is the output? 12? 10? 8?

More importantly, why? I could argue the case for each of the above
numbers, but I think 12 is the way it would be right now.

-- 
Aaron Sherman <[EMAIL PROTECTED]>

Reply via email to