in reply to Nested Data Structure Problems
Here's something that I think does what you want. As a bonus I've made it strict-clean too.
The changes are all in the data loading code. Each individual record that you were building was an array of one element (and that element was a reference to the hash that you really wanted). This didn't break because Perl was trying to interpret it as a pseudo-hash (does anyone else think that pseudo-hashes cause more problems than they solve?)
Anyway, by simply removing the extra array, it all seems to work now. You could probably clean it up a bit more, but I was going for the least number of changes to your original script.
--use strict; my %ID; #load the data... while (<DATA>) { chomp; my @result = split (/\|/); my $rec = {LastName=>$result[1], FirstName=>$result[2], TimeIN=>$result[3], TimeOUT=>$result[4]}; push @{$ID{$result[0]}}, $rec; } #print the data foreach my $key(sort keys %ID){ print "$key\n"; foreach (@{$ID{$key}}){ print "$_->{LastName}\n"; } } __DATA__ 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
|
|---|