Здравствуйте, коллеги.
Пытаюсь написать перекодировщик utf-8 в транслит.
Для этого использую следующую функцию:sub translit
{
my $text = shift;
$text =~ y/абвгдеёзийклмнопрстуфхъыьэ/abvgdeezijklmnoprstufh'y'e/;
print "\nTransilt: $text\n";
$text =~ y/АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЬЭ/ABVGDEEZIJKLMNOPRSTUFH'Y'E/;
my %mchars = ('ж'=>'zh','ц'=>'ts','ч'=>'ch','ш'=>'sh','щ'=>'sch','ю'=>'ju',
'я'=>'ja', 'Ж'=>'Zh','Ц'=>'Ts','Ч'=>'Ch','Ш'=>'Sh','Щ'=>'Sch',
'Ю'=>'Ju','Я'=>'Ja');
for my $c (keys %mchars) {
$text =~ s/$c/$mchars{$c}/g;
}
return $text;
}
Вызов print translit("а")."\n";
дает результат "Translit: ab".
Что я делаю не так?! Откуда берется вторая буква в результате?...