From: Mathew Snyder <[EMAIL PROTECTED]>
> I'm trying to create an array of hashes with hash names that are simply 
> "user1",
> "user2", "user3", etc.  How do I use this method when adding one of the hashes
> to the array?
> 
> my $user = "user" . $i;
> 
> (build hash...)
> 
> push @userData, hash
> 
> Would it be %$user?  %{$user}?  Some other variation on that theme?

You do not need to do anything like that. The 'my' variables are 
block-scoped, not procedure scoped in Perl (unlike AFAIK C or C#). 
This means that you can do something like

while (<>) {
 my %hash;
 my @row = split ',', $_;
 $hash{name} = $row[0];
 $hash{other} = $row[3] / $row[4];
 push @userData, \%hash;
}

since you get a brand new hash with a different address in every 
iteration of the loop.

HTH, Jenda
P.S.: Well, you get a different address if you keep references to 
those hashes. If you use the hash within the body of the loop, but no 
reference to it remains after each iteration then most likely Perl 
will reuse the memory. But that's irrelevant. As far as you are 
concerned, you get a brand new empty unrelated hash each time.
===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz =====
When it comes to wine, women and song, wizards are allowed 
to get drunk and croon as much as they like.
        -- Terry Pratchett in Sourcery


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to