That's good; thanks for that, it works as I'd expect it to.
However, going back to my example...
If this:
my(@DREF_A) = @$REF_A;
my(@DREF_B) = @$REF_B;
push(@DREF_A,"hippos");
Is changed to this:
my(@DREF_A) = @$REF_A;
push(@DREF_A,"hippos");
my(@DREF_B) = @$REF_B;
Shouldn't that change the contents of @DREF_B? (The data should now be copied after the array is changed) It doesn't though, I've just checked it (same output as before).
Also, the @DREF_B output doesn't match the @DREF_A output even if both @DREF_A and @DREF_B are sourced from the same pointer, as in:
my(@DREF_A) = @$REF_A;
push(@DREF_A,"hippos");
my(@DREF_B) = @$REF_A;
Although it does work as per your example:
push(@$REF_A,"hippos");
my(@DREF_A) = @$REF_A;
my(@DREF_B) = @$REF_B;
Seems strange though! Shouldn't @$REF_A evaluate to the same thing whether its a subroutine parameter or a variable assignment?