Я хочу удалить диакритические знаки в некоторых строках. tr///
должен выполнять работу, но не работает (см. ниже). Я думал, что у меня проблема с кодировкой/декодированием, но я заметил, что s///
работает, как я ожидаю. Может ли кто-нибудь объяснить, почему?
Вот пример результатов, которые я получаю:
my $str1 = 'èîü';
my $str2 = $str1;
$str1 =~ tr/î/i/;
print "$str1\n"; # => i�iii�
$str2 =~ s/î/i/;
print "$str2\n"; # => èiü
Обратите внимание, что tr///
также изменил первый и третий символы строки, а не только среднюю.
Изменить: Я использую Ubuntu 16.04 с рабочей средой Mate.