Re: hash

[email protected] (Rob Dixon)
Newsgroups perl.beginners
Message-ID <[email protected]>
Bobby wrote:
> 
> I have a flat file that contains a pid, us_size and euro_size. I want to
> create read in the file and create one hash for the us_size (%US) and the
> other for the euro_size (%EURO). Then i want to do a print statement if the
> pid value in the us_size hash is equal to pid value in the euro_size
> hash...maybe IF ($US{$pid} = $EURO{$pid}) {print statement...}.
> 
> The part where i'm stuck on is how to assign the data into a hash and do the
> comparison, could one of you help me with the Perl's syntax or point in the
> right direction?
> 
> pid|us_size|euro_size
> 1|10|34
> 2|11|35
> 3|12|37
> 4|13|

Another question that skips the /problem/! Are you aware that you can store
multiple values - even another hash or array - as the value of a hash element?

At a guess, you need to be able to access a US and EU size for a given PID, and
I would write a loop like this

  my %pidsizes;

  while (<DATA>) {
    chomp;
    my ($pid, $us, $eu) = split /\|/;
    $pidsizes{$pid}{US} = $us;
    $pidsizes{$pid}{EU} = $eu;
  }

Does that help? Are the PIDs in your file unique? Is the missing Euro size for
PID 4 a mistake or a special case?

Rob
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.