in reply to accessing element of array of arrays

I want to store a value from the first one, @AoA1, into the second one, @AoA2, without changing @AoA1 ... when I change that value of @AoA2 again it changes the corresponding value of @AoA1

I'd have to ask -- what's the value that you're assigning? It is a scalar, or a reference? If it's a reference, you're always going to see the exact behavior that you describe, unless you dereference it when assigning it in @AoA2 ... but how you dereference is dependent upon what's in there to start with. (eg, %{$AoA1[0][1]} or ${$AoA1[0][1]} or @{$AoA[0][1]})

I'd suggest using Data::Dumper to take a look at just what's in @AoA1, and what's actually getting assigned in @AoA2.

Replies are listed 'Best First'.
Re^2: accessing element of array of arrays
by perlqs (Initiate) on Jul 06, 2008 at 03:55 UTC
    Yeah, so a reference is being assigned to @AoA2, which is why it's changing @AoA1 when edited. I still don't know how to dereference the value in @AoA1 before assigning it to @AoA2 (it's a scalar). When I tried ${$AoA1[0][1]} it said: "Can't use string ("1") as a SCALAR ref while "strict refs" in use." String ("1") is the scalar value at @AoA1[0][1]).
      How can you dereference the value in $AoA1[0][1] when $AoA1[0][1] is obviously a scalar (with the value of 1 it seems) ?

      You can only dereference a reference. '1' is not a reference

      Please post more of your code. Language is always ambiguous, code (mostly) not.For example your statement "a reference is being assigned to @AoA2" is ambiguous at least and if taken at face value definitly not what you want. @AoA2= \$x; is equivalent to @AoA2= (); $AoA1[0]= \$x;. Makes no sense, right?

      Also you might use Data::Dumper to get a clear picture of the data you are operating on (really Data::Dumper is the most often mentioned module on PerlMonks, and that's justified).

      What about:

      $AoA2[0] = [ @{ $AoA1[0] } ];

      Dereference first element of @AoA1 as an array; create a new reference to an anonymous array containing the result of the dereferenced array, and assign that new reference as first element of @AoA2.