>perl -wMstrict -le "my $dna = 'atctcggataatgggataaaaatataggctataaatggcgccccggctaattttt'; ;; my @sub_seqs; push @sub_seqs, [ ${^MATCH}, $-[0] ] while $dna =~ m{ atg \K [acgt]+? (?= taa | tag | tga) }xmspg; ;; printf qq{%d sub-sequence(s) \n}, scalar @sub_seqs; ;; print $dna if @sub_seqs; for my $ar_sub_seq (@sub_seqs) { my $cursor = ('-' x $ar_sub_seq->[1]) . ('^' x length $ar_sub_seq->[0]); print $cursor; } ;; my @ss = $dna =~ m{ atg \K [acgt]+? (?= taa | tag | tga) }xmspg; printf qq{'$_' } for @ss; " 2 sub-sequence(s) atctcggataatgggataaaaatataggctataaatggcgccccggctaattttt -------------^^^ -------------------------------------^^^^^^^^^^ 'gga' 'gcgccccggc'