in reply to Array of variables

This line:

@arry = ( $one, $two, $three );

...is creating a copy of the values stored in $one, $two, and $three. But they're just copies; the variables are in no way linked to the array itself.

You probably want to pass references to $one, $two, and $three. That way @arry would hold references to those variables, not copies of their contents:

@arry = ( \$one, \$two, \$three ); ${$arry[1]}++; # Increment the referent's value. print "two is $two\n"; print '$arry[1] is: ', $arry[1], "\n"; print '${$arry[1]} is: ', ${$arry[1]}, "\n";

See perlref, but first perlreftut.


Dave

Replies are listed 'Best First'.
Re^2: Array of variables
by dbuckhal (Chaplain) on May 28, 2013 at 20:49 UTC
    Ok, I'm confused....
    perl -le '($x, $y, $z) = (1, 2, 3); @a = ($x, $y, $z); print join ( " +", map { $_++, $_ } @a )' __output__ 1 2 2 3 3 4
    ...or more (which I believe) is more similar to the OP's example:
    perl -le 'my @a; my ($x, $y, $z) = (1, 2, 3); @a = ($x, $y, $z); print + $a[1]; $a[1]++, print $a[1];' __output__ 2 3
    Am I not breaking it correctly? :)
      What part of what you wrote are you confused about?

        I thought I replicated the OP's code, but did not have a problem with the post-increment of the array element. So, I am confused that my code seems to work, whereas the OP's does not.

        Note how my output does increment the elements. Did I present code that replicates the OP's scenario, or am I off target here?

        Thanks!