Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Variable as name of array

by tobyink (Abbot)
on Nov 01, 2012 at 21:05 UTC ( #1001872=note: print w/ replies, xml ) Need Help??


in reply to Variable as name of array

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);
perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'


Comment on Re: Variable as name of array
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1001872]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (4)
As of 2014-09-21 03:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (166 votes), past polls