use warnings; use strict; use Data::Dumper; my @lines = ; my $n; my %all_hash; for (@lines) { chomp; if (/^>/) { $n = $_; } else { push @{ $all_hash{ $n } }, $_; } } print Dumper(\%all_hash); __DATA__ >seq1 ASDFGHASDFGHJ ERTYUIOOIUYLK NBGFEWERTY >seq2 BGTNHYMJUKOPK MNBFSDFGHJ #### $VAR1 = { '>seq1' => [ 'ASDFGHASDFGHJ', 'ERTYUIOOIUYLK', 'NBGFEWERTY' ], '>seq2' => [ 'BGTNHYMJUKOPK', 'MNBFSDFGHJ' ] };