use strict; use warnings; my $str="AJKDHAKAESRADADKLASRRASDASDKASEKA"; #split on K or R and keep the delimiters my @parts = split /([KR])/, $str; print "@parts\n\n"; # return parts in groups so each group has 2 K or R my $start = 0; foreach my $end (1 .. $#parts / 4) { print join '', @parts[$start .. ($end * 4 - 1)], "\n"; $start = $end * 4; } print "\n"; # return parts in groups so each group has 3 K or R $start = 0; foreach my $end (1 .. $#parts / 6) { print join '', @parts[$start .. ($end * 6 - 1)], "\n"; $start = $end * 6; }