On Wed, 2003-01-29 at 05:29, Leopold Toetsch wrote:
> John Williams wrote:
> 
> > I think you are still overlooking the autovivification behavior.
> > i.e. What is the difference between these:
> > 
> >    1)   $a{1234567} = 1;
> > 
> >    2)   $a[1234567] = 1;
> > 
> > Answer: #1 creates 1 element.  #2 creates 1,234,567 elements!

> Not currently: 2) does
> - generate a sparse hole between old size and up to ~index
> - generate one data chunk near index
> - store the PerlInt at index

I covered this under the term "storage". The storage is different for
arrays and hashes. This we know.

But, why do I need to waste a set of balanced tokens to indicate that
difference? Historical compatibility with Perl5? Perhaps. That's not a
bad reason actually, given how much this could wig people out (just look
at the response on this list :)

Also, you don't always pre-declare in Perl, and the following would be
ambiguous:

        $x[7] = 8;

That could auto-vivify an array ref or a hash ref, and choosing one or
the other is kind of scary. I think you could work around that, but it
would require a real dedication to the IDEA that Perl has a generic
container type.

-- 
Aaron Sherman <[EMAIL PROTECTED]>
This message (c) 2003 by Aaron Sherman,
and granted to the Public Domain in 2023.
Fight the DMCA and copyright extension!


Reply via email to