#! perl -slw use strict; my $seq = 'RKRMMWW*VWMWRYHDWMH*HR*DRMDMWHMWYVMWVRWMVBHWKVYWSMHYWY*HWVMVSKD' . 'HMDBYKMWRSMDSD*...**Y*WD*VWDRYHHYRYKRWWDDKDDH*DV**HYW*RW*WMYMRV*BWB'; my %uniq; substr( $seq, $_, 25 ) =~ m[(\*.{8,23}\*)] and ++$uniq{ $1 } == 1 and print "'$1'" for 0 .. length( $seq )-1; __END__ C:\test>827470 '*VWMWRYHDWMH*HR*' '*HWVMVSKDHMDBYKMWRSMDSD*' '*...**Y*WD*' '*WD*VWDRYHHYRYKRWWDDKDDH*' '*VWDRYHHYRYKRWWDDKDDH*' '*VWDRYHHYRYKRWWDDKDDH*DV*' '*DV**HYW*RW*' '*DV**HYW*RW*WMYMRV*' '**HYW*RW*WMYMRV*' '*HYW*RW*WMYMRV*' '*RW*WMYMRV*'