这个正则替换如何有乱码

这个正则替换怎么有乱码my($doc)$doc我是一个文本新文本$doc~s/[^新]文本/@@@/gprint $doc希望

这个正则替换怎么有乱码
my($doc);
$doc="我是一个文本新文本";
$doc=~s/[^新]文本/@@@/g;
print "$doc";

希望上面的文本中结果为: 我是一个@@@新文本 即 不替换“新文本”。
上面的代码出来后是一个乱码:
我是一窣@@新文本
求解

[解决办法]

Perl code
$doc=~s/(?<!新)文本(?!后)/@@@/g;