FastNetMon

среда, 12 сентября 2007 г.

Скрипт транслитерации на Perl

=head
Отдельная благодарность alekciy`ю (http://alekciy.ru/projects/translit/) за ликбез по части ГОСТов.
Функа ts, предназначена для транслитерации в соответствии с ГОСТ 7.79-2000 (взамен ГОСТ 16876-71)
Хотя есть некоторые сомнения, как получу печатный вариант ГОСТа, тогда будет абсолютно точная версия.

Автор: nrg
Напиcано: Чтв Сен 13 00:04:14 SAMST 2007
Обратная связь: nrg@jabber.snc.ru, icq: 813-793.
=cut
sub ts($)
{
my%hs=('аА'=>'a' , 'бБ'=>'b'  , 'вВ'=>'v'  , 'гГ'=>'g', 'дД'=>'d' ,
'еЕ'=>'e' , 'ёЁ'=>'jo' , 'жЖ'=>'zh' , 'зЗ'=>'z', 'иИ'=>'i' ,
'йЙ'=>'j' , 'кК'=>'k'  , 'лЛ'=>'l'  , 'мМ'=>'m', 'нН'=>'n' ,
'оО'=>'o' , 'пП'=>'p'  , 'рР'=>'r'  , 'сС'=>'s', 'тТ'=>'t' ,
'уУ'=>'u' , 'фФ'=>'f'  , 'хХ'=>'kh' , 'цЦ'=>'c', 'чЧ'=>'ch',
'шШ'=>'sh', 'щЩ'=>'shh', 'ъЪ'=>''   , 'ыЫ'=>'y', 'ьЬ'=>''  ,
'эЭ'=>'eh', 'юЮ'=>'ju' , 'яЯ'=>'ja');
my$z=shift;
pop@{([\map do{$z=~s|[$_]|$hs{$_}|gi;},keys %hs])},$z;$z
}

7 комментариев :

  1. Вот это круто!
    Большое спасибо, унёс к себе, буду пользовать. Фид тоже унёс, и добавил в свои ссылки на блоге.

    ОтветитьУдалить
  2. Через map...
    Красиво, но не читабельно.

    ОтветитьУдалить
  3. Охрененски! Спасибо!

    ОтветитьУдалить
  4. Читабильность не была самоцелью :)

    ОтветитьУдалить
  5. Как насчет utf8?

    ОтветитьУдалить
  6. От utf8 у перла может быть насварение желудка, будьте аккуратны.

    ОтветитьУдалить

Примечание. Отправлять комментарии могут только участники этого блога.