http://www.perlmonks.org?node_id=1073851


in reply to Allocation of anonymous arrays

Your coworker is either using some extremely deep magic here or (much more likely) that assignment doesn't do what he thinks it does.

Hash keys are strings, not scalars. So, when you try to use an array ref as a hash key, it gets stringified and your hash key is the resulting string (e.g., the literal text "ARRAY(0xdeadbeef)"), not the original reference. If he really wants 'random' unique keys for the hash, he could just as well use [] for all the keys. (Or, really, if you're going to use random garbage keys for your hash, you may as well use an array instead, since you won't be able to do key-based lookups anyhow.)

As for your actual question, meditate upon this:

$ perl -e 'print [] . "\n" . [] . "\n" . [] . "\n";' ARRAY(0x9e557ec) ARRAY(0x9e6ef80) ARRAY(0x9e6efbc)
Three references to empty anonymous arrays in a single statement, yet each is unique.