Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: how to iterate over multiple hashes with same key value

by Utilitarian (Vicar)
on Jul 02, 2013 at 06:21 UTC ( #1041962=note: print w/replies, xml ) Need Help??

in reply to how to iterate over multiple hashes with same key value

When examining your data you should probably examine what you want to take from it before deciding how to store it, in this case 2 arrays keyed on the first column best represent your intended use of the data, there's no need to create separate data structures, in fact having a single data structure makes passing it to subsequent functions easier.

So here's a solution using a single data structure with each customer referencing 2 arrays, one for time and the other for location.

~/$ cat #!/usr/bin/perl use strict; use warnings; open(my $customers, $ARGV[0])|| die "Couldn't open $ARGV[0] $!\n"; my %cust; while(<$customers>){ chomp; my @rec=split(/\s+/, $_); push @{$cust{$rec[1]}->{time}},$rec[0]; push @{$cust{$rec[1]}->{location}},$rec[2]; } for my $cust (sort keys %cust){ print "$cust: ",join(" ",@{$cust{$cust}->{time}})," : ",join(" ",@ +{$cust{$cust}->{location}}),"\n"; } ~/$ perl tmp.dat a: 12:10 12:13 : america australia b: 12:11 2:30 : bombay bhutan c: 12:12 : calcutta n: 3:40 : neterland
Moved from duplicate thread
print "Good ",qw(night morning afternoon evening)[(localtime)[2]/6]," fellow monks."

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1041962]
[1nickt]: settle down beech
[Your Mother]: Catchy

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (7)
As of 2017-03-28 02:48 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (326 votes). Check out past polls.