use warnings; use strict; local $/; my $data = ; while ($data =~ /TATAAT[ACGT]+ATG([ACGT]+)(:?T(:?GA|AA|AG))/cgs) { warn $1; } __DATA__ TATAATATTACAATGGATCATACAGTTAG TATAATATTACAATGGATCATACAGTTAG TATAATATT ACAATGGATCATACAGTTAG