Have you tried? You need some extra braces in there, and need to drop the second my, but other than that your code works...
my @names = qw(A B C D); for (my $i=0; $i<4; $i++) { @{$names[$i]} = $i; } use Data::Dumper; print Dumper(\@A, \@B, \@C, \@D);
These are called symbolic references. It is forbidden by the strict parameter because it's usually a bad idea. That's not to say it's always a bad idea; strict refs is just about the only part of strict that's occasionally worth disabling (occasionally, in a small lexical scope).
There are usually better ways of doing it. Here's one way, using a hash of arrays:
use strict; my %ARRAYS; my @names = qw(A B C D); for (my $i=0; $i<4; $i++) { @{ $ARRAYS{$names[$i]} } = $i; } use Data::Dumper; print Dumper(@ARRAYS{@names});
Here's another way using hard references instead of symbolic references:
use strict; my (@A, @B, @C, @D); my @names = (\@A, \@B, \@C, \@D); for (my $i=0; $i<4; $i++) { @{$names[$i]} = $i; } use Data::Dumper; print Dumper(\@A, \@B, \@C, \@D);
In reply to Re: Variable as name of array
by tobyink
in thread Variable as name of array
by Hopfi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |