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.
Moved from duplicate thread~/$ cat tmp.pl #!/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.pl tmp.dat a: 12:10 12:13 : america australia b: 12:11 2:30 : bombay bhutan c: 12:12 : calcutta n: 3:40 : neterland
print "Good ",qw(night morning afternoon evening)[(localtime)[2]/6]," fellow monks."
In Section
Seekers of Perl Wisdom