Сразу скажу, раньше с 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
Измени цикл:
------------------------------
for (@letters) {
$mes = $hash{$_};
print $mes;
}
------------------------------
и будет тебе счастье.
>Измени цикл:
>------------------------------
>for (@letters) {
>$mes = $hash{$_};
>print $mes;
>}
>------------------------------
>и будет тебе счастье.
а если вначале определить, что my $message = "привет";
и убрать @letters = split //, $message;то какое условие цикла будет?
А зачем?
>А зачем?я хочу проверить как будет работать с фиксированной строкой, а потом уж параметр передавать буду
мне , к примеру, нужно "привет" перевести в "privet"
>>А зачем?
>
>я хочу проверить как будет работать с фиксированной строкой, а потом уж
>параметр передавать буду
>
>мне , к примеру, нужно "привет" перевести в "privet"
вот это:
@letters = split //, $message;
for (@letters){$_mes = $hash{$_mes}};print $mes;
замени на
foreach (keys %hash) {
$message=~s/$_/$hash{$_}/g if($message=~m/$_/g);
}print $message;
и убери элемент '.' из хэша - точку-то зачем транслитерировать??? :)
>>А зачем?
>
>я хочу проверить как будет работать с фиксированной строкой, а потом уж
>параметр передавать буду
>
>мне , к примеру, нужно "привет" перевести в "privet"
вот это:
@letters = split //, $message;
for (@letters){$_mes = $hash{$_mes}};print $mes;
замени на
foreach (keys %hash) {
$message=~s/$_/$hash{$_}/g if($message=~m/$_/g);
}print $message;
и убери элемент '.' из хэша - точку-то зачем транслитерировать??? :)
>>>А зачем?
>>
>>я хочу проверить как будет работать с фиксированной строкой, а потом уж
>>параметр передавать буду
>>
>>мне , к примеру, нужно "привет" перевести в "privet"
>вот это:
>@letters = split //, $message;
>for (@letters){$_mes = $hash{$_mes}};
>
>print $mes;
>
>замени на
>
>foreach (keys %hash) {
>$message=~s/$_/$hash{$_}/g if($message=~m/$_/g);
>}
>
>print $message;
>
>и убери элемент '.' из хэша - точку-то зачем транслитерировать??? :)
Огромное спасибо!!!!!!!
Выручил....работает супер!!!