I need to know what the found pattern was and I need to know if it's repeated which is why two regexp wont work I'm afraid.
Two regexes will work just fine. Use the first to do coarse filtering, and the second to filter.
while ($seq{$k} =~ /([QGYN]{3,6})/g) {
next if $1 =~ m/QQQ|GGG|YYY|NNN/;
print "\n$k";
print $1." begins at position ", (pos($seq{$k})-length($s)) , "\n";
}
This has the benefit of being blindingly obvious about what you're doing.
Oops: ikegami is correct. This is blindingly wrong.