in reply to Nested Data Structure Problems

I'd probably write that as:
while (<DATA>) { chomp; my($id, $last, $first, $in, $out) = split /\|/; push @{$ID{$id}}, { LastName => $last, FirstName => $first, TimeIN => $in, TimeOUT => $out, }; }
That'll make $ID{"0003"}[0]{"LastName"} be "Rubble". I think you were putting in an extra level of indirection that you didn't want.

-- Randal L. Schwartz, Perl hacker