my %info; while (my ($head, $data) = read_record($in)) { if ($head->[1] eq 'RefSeq' and $head->[2] eq 'gene') { my $id = join '/', @{$head}[0,3,4]; my $record = {}; push_record($record, $data); push_record($record, (read_record($in))[-1]); $info{$id} = $record; } }