in reply to Open file, sort data on matching field, close file

This will likely have to be a multi-pass process. It appears that you have a well known set of of fields that appear to order nicely into sql-like tables:

employee_info
managers
buildings
locations
positions
rooms
departments

And you know, it appears, that data grouped on successive lines relate to each other and that groupings are separated by blank lines, and that data tags and their value are spearated by a colon. So, go through the file line by line, read data into a buffer by reading forward until you hit a blank line, then store that into temporary hashes as if in sql tables. Once it's all compiled, then output your total file.

pseudo-code:

open FILE, $infile; @lines = <FILE>; 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... }




Time flies like an arrow. Fruit flies like a banana.