c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le
"our @A_0;
our @A_1;
our @A_2;
our @A_3;
;;
for my $i (0 .. 3) {
my $name = qq{A_$i};
no strict 'refs';
$name->[$i] = 1000 + $i;
}
dd \@A_0;
dd \@A_1;
dd \@A_2;
dd \@A_3;
"
[1000]
[undef, 1001]
[undef, undef, 1002]
[undef, undef, undef, 1003]
####
c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le
"my @A_0;
my @A_1;
my @A_2;
my @A_3;
;;
for my $arrayref ( \(@A_0, @A_1, @A_2, @A_3) ) {
$arrayref->[0] = 1234;
}
dd \@A_0;
dd \@A_1;
dd \@A_2;
dd \@A_3;
"
[1234]
[1234]
[1234]
[1234]
####
c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le
"my @arrayrefs = ( \my (@A_0, @foo, @A_2, @A_3) );
;;
for my $i (0 .. $#arrayrefs) {
$arrayrefs[$i][$i] = 1000 + $i;
}
dd \@A_0;
dd \@foo;
dd \@A_2;
dd \@A_3;
"
[1000]
[undef, 1001]
[undef, undef, 1002]
[undef, undef, undef, 1003]
####
c:\@Work\Perl>perl -wMstrict -MData::Dump -le
"use 5.012;
;;
my @arrayrefs = \my (@A_0, @foo, @A_2, @A_3);
;;
while (my ($i, $ar) = each @arrayrefs) {
$ar->[$i] = 1000 + $i;
}
dd \@A_0;
dd \@foo;
dd \@A_2;
dd \@A_3;
"
[1000]
[undef, 1001]
[undef, undef, 1002]
[undef, undef, undef, 1003]