use strict; use warnings; my ($key, %hash, @order); while () { $key = substr($_,1,length($_)-2); $hash{$key} = ..; push @order, $key; } # To look up a specific record: $key = 'Record 3'; print "$key =>\n$hash{$key}\n"; # To output the records in order: print "$_ =>\n$hash{$_}\n" for @order; __DATA__ >Record 1 AGTCTAGTCAT CATCATAAGAT CATCAATCACA >Record 2 ATGAACAGCAG ATGAAGAATGG ATAG >Record 3 AGTCTAGTCAT CATCATAAGAT CATCAATCACA >Record 4 ATGAACAGCAG ATGAAGAATGG ATAG