use strict;
use warnings;
my @strings = (
q{asdfgGOATaewrjgn},
q{ererGOAskjgbrTslkgjnjng},
q{ccGOAjgTsvs},
q{aGO
i hate clowns
ATbbb});
my $needle = q{GOAT};
my @parts = split m{}, $needle;
my $notNeedle = qq{[^$needle]*};
my $haystackPatt = q{(} . join($notNeedle, @parts) . q{)};
my $rxHaystack = qr{$haystackPatt};
my $stuff1 = q{^^^};
my $stuff2 = q{+++};
foreach my $string ( @strings )
{
print qq{$string\n};
$string =~ s{$rxHaystack}{$stuff1$1$stuff2};
print qq{$string\n\n};
}