One of Perl's "problems" (also its strength if you are knowledgeable) is that one often needs to understand implementation issues to use effectively
|
Every package has a symbol table (i.e. list of used symbols) called :: so that main symbol table is
|
%main:: and variable $var in main has symbol table entry $main::{'var'}
|
*var is equivalent to $main::{'var'}
|
The symbol $original exists, we can set
|
*var = *original; # and then $var is another 'name' for $original and @var is separately another name for @original etc.
-
i.e. $var @var %var have same symbol table entry but will have different hard references
|