use strict; use warnings; my @partsList; push @partsList, [split] while ; my $geneName = ''; $geneName = $_->[5] ||= $geneName for reverse @partsList; print join ("\t", @{$_}[0 .. 5]), "\n" for @partsList; __DATA__ NT_113797 CDS 122829 123323 - gene=LOC644591 ProteinID=XP_932799.1 NT_113798 CDS 4457 4636 - NT_077932 CDS 9894 9928 - NT_077932 CDS 65297 65828 + NT_077932 CDS 89196 89690 - gene=LOC653505 ProteinID=BJDND993