Actually, that's incorrect, and it's probably the same mistake that the original poster made. The flaw is that the memory address shown as part of the stringification of the reference is the *relative* memory address to that process. The operating system uses something called "virtual memory", which abstracts the actual *physical* memory location away from your processes. In truth, the physical memory addresses may change from time to time, as your process is swapped and paged and so on.
Anyway, here's a quick demo:
prompt> perl -le 'my $pid = fork; my $x = [$pid]; print "$x-> -- $x
0 -- ARRAY(0x80d11ec)
24694 -- ARRAY(0x80d11ec)
You can see that each process has it's own array, with the reference stored in $x, yet in both processes, the memory address appears the same.
Not an editor command: Wq