FAQ
I read in a file and process three fields per record. For speed I wish to store them in hash arrays.
Field 1 is the key field, the one I search for. When I get the reply, I want the related data
from the other hash arrays, i.e. the three fields are related. What is best way to store
that data?

Thanks,

Joe

Search Discussions

  • Dave Storrs at Oct 13, 2001 at 2:22 am
    Hi Joe,

    Probably the easiest is to store the second and third values as an array
    or hash ref. Here's a demo script that shows what I mean (remove the line
    numbers on the left before running it; they are there only to facilitate
    discussion)

    #!/usr/local/bin/perl -w

    1 my %records = ();
    2 open IN, "some_file" or die "Oops! $!\n";
    3 while (<IN>) {
    4 my @fields = split /\t/;
    5 $records{ shift @fields } = [ @fields ];
    6 }
    7 close IN;

    8 while (my($key, $ra_value) = each %records) {
    9 print "key, values: $key => $ra_value->[0], $ra_value->[1]\n";
    10 }

    Here's what the interesting lines do:

    3: Read a line from the file, magically assign it to $_.

    4: Split defaults to $_ if you don't specify a variable.

    5: Shift removes the first argument from the specified array (or @_ if
    none specified) and returns it. That means that, once you evaluate the
    left hand side of this line, @fields contains only two values. On the
    right hand side, we are using square brackets to construct a reference to
    an anonymous array (cf 'perldoc perlref') and initializing it with the
    values in @fields.

    8: 'each' iterates through a hash and returns one key/value pair after
    another. The idiom I use here is common and very convenient.

    9: Notice that, since $ra_value is a reference to an array (hence the
    prefix), you need to dereference its fields with a '->'.


    HTH,

    Dave
    I read in a file and process three fields per record. For speed I wish to store them in hash arrays.
    Field 1 is the key field, the one I search for. When I get the reply, I want the related data
    from the other hash arrays, i.e. the three fields are related. What is best way to store
    that data?

    Thanks,

    Joe

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupbeginners @
categoriesperl
postedOct 10, '01 at 6:18p
activeOct 13, '01 at 2:22a
posts2
users2
websiteperl.org

People

Translate

site design / logo © 2021 Grokbase