open FILE, $infile; @lines = ; close FILE; for $i (0 .. $#lines) { if ($lines($i) ne "") { ($tag, $value) = split(/:/, $lines($i)); $temp{$tag} = $value; } else { #reached end of a data grouping, now process it if exists $temp{'employee_id'} { foreach $field (keys %temp) { $employee_info{$field} = $temp{$field}; } } elseif (exists $temp{'position_id') && exists $temp{'title'}) { $positions{$temp{'position_id')} = $temp{'title'}; } elseif { ....etc... } ...etc... } ...clear %temp... } foreach $employee (keys %employee_info) { output info, drawing labels from %positions, %departments, etc... }