$text = "asssssaasssxaasaayaaa"; print "Before: $text\n"; $text =~ s/(?:\G([^xa]*?)a|()a(?!.*y))/$1A/g; print "After: $text\n"; print "-----\n"; $text = "asssssaasssxaasaxayayaaa"; print "Before: $text\n"; $text =~ s/(?:\G([^xa]*?)a|()a(?!.*y))/$1A/g; print "After: $text\n"; print "-----\n"; $text = "asssssaasssxaasayaxayaaa"; print "Before: $text\n"; $text =~ s/(?:\G([^xa]*?)a|()a(?!.*y))/$1A/g; print "After: $text\n";