my $s = "AACCCDGYAEELPSWWYAOOLLLSSBBBDDD"; for my $len (2..4) { my @parts; for my $offs (0..length($s)-$len) { push @parts, substr($s, $offs, $len); } print "i=$len: @parts\n"; } __END__ i=2: AA AC CC CC CD DG GY YA AE EE EL LP PS SW WW WY YA AO OO OL LL LL LS SS SB BB BB BD DD DD i=3: AAC ACC CCC CCD CDG DGY GYA YAE AEE EEL ELP LPS PSW SWW WWY WYA YAO AOO OOL OLL LLL LLS LSS SSB SBB BBB BBD BDD DDD i=4: AACC ACCC CCCD CCDG CDGY DGYA GYAE YAEE AEEL EELP ELPS LPSW PSWW SWWY WWYA WYAO YAOO AOOL OOLL OLLL LLLS LLSS LSSB SSBB SBBB BBBD BBDD BDDD