Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi, bit of a newbie question after a Friday afternoon down the pub.... unfortunately it's making my head hurt...

I'm parsing a load of data containing multiple entires for various keys. I've generated an array of the unique keys, and want to use this to trawl the data and populate an array associated with the unique keys (There are going to be duplicate entrries which I want to keep, so I want an array instead of a hash).

So I need something along the lines of. . .

foreach (@uniquekey) { if (/something/) { push(@($_),$_); } }

or am I missing something obvious here.. Regards Rich

Replies are listed 'Best First'.
Re: arrays from arrays
by fruiture (Curate) on Mar 07, 2003 at 17:15 UTC

    So you say you have multiple values for certain keys.

    key => value,value,value

    This directly translates to Perl:

    my %hash = ( key => [ value, value, value ], ... );

    We call this a HoA, a hash of arrays as every value is another (anonymous) array-reference.

    The creation of such a data structure is very easy with Perl as it has magic autovivification:

    use Data::Dumper qw/Dumper/; my %hash = (); while( <DATA> ){ chomp; my ($k,$v) = split /\s*:\s*/; push @{ $hash{ $k } } , $v } print Dumper( \%hash ); __DATA__ green : apple yellow: banana green : kiwi red : strawberry green : mango yellow: lemon

    That's it. Perl is great. update: see perlref and perldata of course.

    --
    http://fruiture.de

      Excellent, thanks for that, worked perfectly, even if I don't quite know how... will real up on Date::Dumper on Monday..

      Thanks.