以前の同様の質問を確認し、さまざまなバリエーションの引用メタをジャグリングしてきましたが、まだ何かが正しくありません。
単語 ID と 2 つの単語を含む行があります。最初の単語は間違った単語で、2 番目の単語は正しい単語です。そして、正規表現を使用して間違った単語を正しい単語に置き換えています。
$line = "ANN20021015_0104_XML_16_21 A$xAS A$xASA";
@splits = split("\t",$line);
$wrong_word = quotemeta $splits[1];
$right_word = quotemeta $splits[2];
print $right_word."\n";
print $wrong_word."\n";
$line =~ s/$wrong_word\t/$right_word\t/g;
print $line;
私がやっていることの何が問題になっていますか?
編集
問題は、完全な単語を保持できないことです。単語は特殊文字で切り捨てられます。このコードは、特殊文字を含まない単語に対して完全に機能します。
上記の例に必要な出力は次のとおりです。
ANN20021015_0104_XML_16_21 A$xASA A$xASA
しかし、私が得るのは
ANN20021015_0104_XML_16_21 A A
$
キャラだから。