ID|LastName|FirstName|TimeIN|TimeOUT 0001|Flintstone|Fred|0900|1300 0001|Flintstone|Fred|0900|1100 0001|Flintstone|Fred|1200|1630 0002|Flintstone|Wilma|0900|1500 0002|Flintstone|Fred|0930|1100 0003|Rubble|Barney|0900|1100 #### #load the data... while(){ chomp; @result = split (/\|/); my @rec = ({LastName=>$result[1], FirstName=>$result[2], TimeIN=>$result[3], TimeOUT=>$result[4]}); $thisrecord = \@rec; push @{$ID{$result[0]}},$thisrecord; } close(FILE); #print the data foreach $key(sort keys %ID){ print "$key\n"; foreach (@{$ID{$key}}){ print "$_->{gender}\n"; } }