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... }
In reply to Re: Open file, sort data on matching field, close file
by punch_card_don
in thread Open file, sort data on matching field, close file
by rycher
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |