#!/usr/bin/perl use warnings; use strict; use 5.012; # 902200 my @lines = qw( >seq1 ASDFGHASDFGHJ ERTYUIOOIUYLK NBGFEWERTY >seq2 BGTNHYMJUKOPK MNBFSDFGHJ >seq3 USE_STRICT&USE_WARNINGS lastline ); my $line; my ($DNA, $seq); # descriptive var names my %all_hash = (); for my $line (@lines){ # insert after this line, see update 2 chomp $line; if ($line =~ /^>(seq\d)/ ) { # captures seq# withOUT the '>' $seq = "$1\n"; say "\n\$seq: $seq"; # useful for debug; otherwise, not } else { $DNA = "$line\n"; say "\$DNA: $DNA"; } no warnings; #otherwise, warns 'unitialized' for the first $DNA $all_hash{ $seq } .= $DNA; # concat $DNAs, which now # have '\n's restored for readability use warnings; } print "\n =============== \n"; print %all_hash; #### $seq: seq1 $DNA: ASDFGHASDFGHJ $DNA: ERTYUIOOIUYLK $DNA: NBGFEWERTY $seq: seq2 $DNA: BGTNHYMJUKOPK $DNA: MNBFSDFGHJ $seq: seq3 $DNA: USE_STRICT&USE_WARNINGS $DNA: lastline =============== seq1 ASDFGHASDFGHJ ERTYUIOOIUYLK NBGFEWERTY seq3 USE_STRICT&USE_WARNINGS lastline seq2 BGTNHYMJUKOPK MNBFSDFGHJ