> Regarding the allocation, in this case, we're talking pointer to an array.
yes, reference to an array (pointers are in C memory addresses but references are more complicated).
But it doesn't matter @array and $array_ref=\@array are just two different ways to represent the same array.
> Normally, I wouldn't create an empty array, but was pretty sure that I had to have the reference in place before the push, yes?
As I told you: No!
You are pushing to a variable starting with @. If the array doesn't exist already it will be allocated.
If it exists but it's incompatible to push (like a hash) you,'ll get an error.
DB<107> ref $a
=> ""
DB<108> push @$a,1..3
=> 3
DB<109> ref $a
=> "ARRAY"
DB<110> $b={}
=> {}
DB<111> push @$b,1..3
Not an ARRAY reference at (eval 44)[multi_perl5db.pl:644] line 2.
DB<112> ref $b
=> "HASH"
In newer versions of Perl you are even allowed to push directly to $array_refs.
|