in reply to Duplicating array contents

Well, you understand that  $p = \@a; makes $p be a reference to the array @a, right? That means if you alter @a in any way, @$p is altered as well, and vice versa.
If your point is really to create a new, indpendent copy of the contents of an array, you would simply do this:
@b = @a;

You may indeed do  $p = [ @a ]; with the understanding that $p is now a reference to a copy of @a.

jdporter
...porque es dificil estar guapo y blanco.