Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: Assigning variables via looping

by gwadej (Chaplain)
on Jun 02, 2009 at 19:48 UTC ( #767755=note: print w/replies, xml ) Need Help??

in reply to Assigning variables via looping

You are using symbolic references, which cannot point to lexical (my) variables. (use strict would have told you that.)

In general, this is a path to much pain. You would (usually) be better off using a hash. (There are a very few cases where the symbolic references might be a better choice, but the odds of this being one of them is really slim.

my %greeting; my @names = ('peter', 'jonah', 'larry'); foreach my $n (@names) { $greeting{$n} = "i like $n"; } print "$greeting{peter} \n $greeting{jonah} \n $greeting{larry} \n";

Of course, there's always more than one way.

my %greeting = map { $_ => "i like $_" } ('peter', 'jonah', 'larry'); print join( " \n ", @greeting{qw/peter jonah larry/} ), " \n";
G. Wade

Replies are listed 'Best First'.
Re^2: Assigning variables via looping
by Errto (Vicar) on Jun 02, 2009 at 21:14 UTC
    (use strict would have told you that.)

    Well, use strict wouldn't let you use symbolic references at all. Even if you declared @names, $jonah, $peter, and $larry. Though I guess if you only enable strict for vars, not refs, that might tell you something.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://767755]
[marto]: Hey there
[Marshall]: hope we get a good answer to Script stopped working... this OP is making serious efforts to solve problem on his own.
[Marshall]: I've become frustrated lately with some OP's.

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (4)
As of 2018-03-18 12:56 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (230 votes). Check out past polls.