以下は、注釈のリストに対して入力ファイルの各行をスキャンする私のスクリプトです。出現するたびに、行の用語に注釈タグを付けます。正規表現は\Q.. \ E演算子がなくても完全に機能しますが、\ Q ..\EIを含めないと範囲エラーが発生します。したがって、以下の状況では、置換を有効に保つと同時に、範囲を管理する必要があります。質問が明確であることを願っています。
while (<FILE>) {
chomp $_;
foreach $word (@array) {
@cells = split /\t/, $word;
$value = $cells[0];
$replace = $cells[1];
chomp $value;
chomp $replace;
$_=~s/\Q\b[\w\-]*$value[\w\-]*\b\E)/<$replace>$&<\\$replace>/ig;
}
print $_,"\n";
}