It may be worth havine a look at Text::CSV (which can work with tabs too). The column_names method shows how you might get the names from the header (i.e assuming it is the first line). Subsequent get_line_hr calls will then return a hash ref keyed on column names.
It would be fairly straight forward to identify which records you need.
If you need help with that post a shortish/simplified example of your data.
Good luck!
Comment on Re: how to extract data from an array using a condition