while(my $line=) { my $linecopy=$line; while ($line=~m/(ct[ag]a[ct])/g) { my $match=$1; my ($rest)=$linecopy=~m/(?:$match)(.*)$/; print "$match\t".length($rest)."\t"; } print "\n"; } #### sub matchit { my $data=shift; if ($data =~ m/(ct[ag]a[ct])(.*)$/) { print "$1\t".length($2)."\t"; matchit($2); } else { print "\n"; } } matchit($_) while();