my @a = (1,2,3); my $c = $a[-1]; #for (@a) { # prints 1..10 for ((), @a) { # prints 1..3 push @a, ++$c if $c < 10; print "$_\n"; } #### ... for ((), @a) { push @a, ++$c if $c < 10; $_ *= 2; # modify aliased elements print "$_\n"; } use Data::Dumper; print Dumper \@a; __END__ 2 4 6 $VAR1 = [ 2, 4, 6, 4, 5, 6 ];