The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Транслитерация рус-англ.......проблеммка"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Транслитерация рус-англ.......проблеммка" 
Сообщение от Namich emailИскать по авторуВ закладки(ok) on 11-Фев-05, 13:16  (MSK)
Сразу скажу, раньше с Perl не был знаком

мне нужно транслитерировать строку с русского на английский.....
вот мой скрипт

#!c:\perl\bin\perl

use CGI qw/:standard/;

my $message = param(TEXTIN);


%hash = (
'а' => 'a',
'б' => 'b',
'в' => 'v',
'г' => 'g',
'д' => 'd',
'е' => 'e',
'ё' => 'yo',
'ж' => 'zh',
'з' => 'z',
'и' => 'i',
'й' => 'j',
'к' => 'k',
'л' => 'l',
'м' => 'm',
'н' => 'n',
'о' => 'o',
'п' => 'p',
'р' => 'r',
'с' => 's',
'т' => 't',
'у' => 'u',
'ф' => 'f',
'х' => 'h',
'ц' => 'c',
'ч' => 'ch',
'ш' => 'sh',
'щ' => 'sch',
'ы' => 'y',
'э' => 'e',
'ю' => 'yu',
'я' => 'ya',
' ' => ' ',
'.' => '.');


@letters = split //, $message;
for (@letters){$_mes = $hash{$_mes}};

print $mes;

после обработки выдаёт : Error. Script return nothing

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Транслитерация рус-англ.......проблеммка" 
Сообщение от allez Искать по авторуВ закладки(ok) on 11-Фев-05, 13:28  (MSK)
Измени цикл:
------------------------------
for (@letters) {
$mes = $hash{$_};
print $mes;
}
------------------------------
и будет тебе счастье.
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Транслитерация рус-англ.......проблеммка" 
Сообщение от Namich emailИскать по авторуВ закладки(ok) on 11-Фев-05, 13:40  (MSK)
>Измени цикл:
>------------------------------
>for (@letters) {
>$mes = $hash{$_};
>print $mes;
>}
>------------------------------
>и будет тебе счастье.


а если вначале определить, что my $message = "привет";
и убрать @letters = split //, $message;

то какое условие цикла будет?

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Транслитерация рус-англ.......проблеммка" 
Сообщение от allez Искать по авторуВ закладки(ok) on 11-Фев-05, 13:50  (MSK)
А зачем?
  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Транслитерация рус-англ.......проблеммка" 
Сообщение от Namich emailИскать по авторуВ закладки(ok) on 11-Фев-05, 14:07  (MSK)
>А зачем?

я хочу проверить как будет работать с фиксированной строкой, а потом уж параметр передавать буду

мне , к примеру, нужно "привет" перевести в "privet"

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Транслитерация рус-англ.......проблеммка" 
Сообщение от PoizOn Искать по авторуВ закладки on 11-Фев-05, 16:00  (MSK)
>>А зачем?
>
>я хочу проверить как будет работать с фиксированной строкой, а потом уж
>параметр передавать буду
>
>мне , к примеру, нужно "привет" перевести в "privet"
вот это:
@letters = split //, $message;
for (@letters){$_mes = $hash{$_mes}};

print $mes;

замени на

foreach (keys %hash) {
$message=~s/$_/$hash{$_}/g if($message=~m/$_/g);
}

print $message;

и убери элемент '.' из хэша - точку-то зачем транслитерировать??? :)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Транслитерация рус-англ.......проблеммка" 
Сообщение от PoizOn Искать по авторуВ закладки on 11-Фев-05, 16:02  (MSK)
>>А зачем?
>
>я хочу проверить как будет работать с фиксированной строкой, а потом уж
>параметр передавать буду
>
>мне , к примеру, нужно "привет" перевести в "privet"
вот это:
@letters = split //, $message;
for (@letters){$_mes = $hash{$_mes}};

print $mes;

замени на

foreach (keys %hash) {
$message=~s/$_/$hash{$_}/g if($message=~m/$_/g);
}

print $message;

и убери элемент '.' из хэша - точку-то зачем транслитерировать??? :)


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Транслитерация рус-англ.......проблеммка" 
Сообщение от Namich emailИскать по авторуВ закладки(ok) on 14-Фев-05, 09:21  (MSK)
>>>А зачем?
>>
>>я хочу проверить как будет работать с фиксированной строкой, а потом уж
>>параметр передавать буду
>>
>>мне , к примеру, нужно "привет" перевести в "privet"
>вот это:
>@letters = split //, $message;
>for (@letters){$_mes = $hash{$_mes}};
>
>print $mes;
>
>замени на
>
>foreach (keys %hash) {
>$message=~s/$_/$hash{$_}/g if($message=~m/$_/g);
>}
>
>print $message;
>
>и убери элемент '.' из хэша - точку-то зачем транслитерировать??? :)


Огромное спасибо!!!!!!!
Выручил....работает супер!!!

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру