in reply to Assigning variables via looping

Best practices are relative and subjective, but it's generally considered a good idea to avoid using Symbolic references without good reason. Why are you using references in place of a hash, i.e.:

use strict; use warnings; my @names = ('peter','jonah','larry'); my %name_hash = (); foreach (@names) { $name_hash{$_} = "i like $_"; } print "$name_hash{$_}\n" foreach @names;

In a side note, while you cannot use my on globals, you can localize their values with local. <-- not really relevant.

Update: A useful link, as pointed out by bart in CB: http://www.google.com/search?q=varvarname&btnI=I;

If you are tied to the idea of symbolic refs, you can use them with some degree of stricture with

use strict; use warnings; my @names = ('peter','jonah','larry'); our ($peter,$jonah,$larry); foreach (@names) { no strict 'refs'; $$_ = "i like $_"; } print "$peter\n$jonah\n$larry\n";

But read the link first.