为什么在perl中使用s、y和tr运算符会得到不同的结果?

92dk7w1h  于 2023-03-30  发布在  Perl
关注(0)|答案(1)|浏览(164)

perl -pe 's/A/ā/' <<< "avatAr"给我的avatār和预期的一样。
但是perl -pe 'y/A/ā/' <<< "avatAr"perl -pe 'tr/A/ā/' <<< "avatAr"都给予我avat�r
为什么会这样呢?我怎样才能得到与替换相同的结果呢?
我也试过perl -Mutf8 -C24 -pe 'tr/A/ā/' <<< "avatAr",它给了我

Wide character in print at -e line 1, <> line 1.
avatār

我做错了什么才得到这个警告?y而不是tr的结果相同。

r1wp621o

r1wp621o1#

除了像kaavannan解释的那样需要-Mutf8之外,你还得到了“宽字符”警告,因为-C24中的数字是数字,而不是标志,所以应该写为-C6。更好的方法是使用标志并启用stderr:-CS .

相关问题