in reply to arrays or hashes

If you are working with just the names - then yes, I would use an array, faster access.

However, if you need the values associated with the names - your best be may be to build a hash of arrays.

Alternately, if you just need to loop once, using both the names & values - forget an array or a hash, just split the data in the loop that you read the file :)

Replies are listed 'Best First'.
Re: Re: arrays or hashes
by Anonymous Monk on Aug 27, 2002 at 15:58 UTC
    i'm working with both names and values.....what is the best way to build a hash of arrays? thanks
      I would do something like this:

      my %data; while (<FILE>) { my ($name, $val) = split /\s+/; push @{ $data{$name} }, $val; }
      When you say working with both names and values, what are you trying to do with them? add all the second coulmn numbers for each name up? sort by something? what? depending on exactly what you are going to be doing with the data your options can be way different. for instance if you want to add all of the numbers up for each name you can do this:
      my %names; open (FILE, "data") or die "Cant open data: $!\n"; while (<DATA>) { chomp; my ($tempname, $tempnum) = split / /; $names{"$tempname"} += $tempnum; } close FILE;
      Or if you need to track all of the numbers seperatly you could use an HoA (Hash of ArrayRefs) such that you push (@{$names{"$tempname"}},$tempnum); values into it. let us know what you plan to do with the data and we can get you some decent data structs. =)

      -Waswas