Well yes that's how it's implemented in Perl - and other languages like Python or JS too - but doesn't help comparing languages.
They all store references into their "namespaces" or "lexical pads"
Perl for instance does a *array= [1,2,3] to create a package variable accessible as @array °
Python and JS do essentially* the same thing!!!
Only the syntax to access and operate those variables is different.
the following is legal² JS code ³
>> $a = [1,2,3]
Array(3) [ 1, 2, 3 ]
>> $a[0] // Perl: $a->[0]
1
>> $b = $a
Array(3) [ 1, 2, 3 ]
>> $b[0]=666 // Perl $b->[0] = 666
666
>> $a
Array(3) [ 666, 2, 3 ]
and "anonymous" only refers to the literal [array] or {hash} constructors not to the scalar on the LHS of an assignment.
The difference is not "named" or "unnamed", but explicit or implicit dereferencing.
If anything, references are the "plain" fundamental thing..
°) or scalars, but this can't be easily written *scalar = \1 is not the same thing
*) JS has primitive values (read scalar) and objects (read blessed references), there is no explicit referencing only implicit.
²) JS has no sigils $ is a legal part of an identifier to allow "machine translations", jQuery is messing with that.
³) updated and extended |