|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Paul Kulchenko 2:5020/400 08 Sep 2000 00:24:02 To : All Subject : Re: eval "tr..." не работает --------------------------------------------------------------------------------
Hi, Ilgiz!
Ilgiz Kalmetev wrote:
> Перекодировщик в целом нормально работает. Кроме вот этого самого места -
> upper case -> lower case. Причем, если в tr подставлять константы, вот
> так:
>
> if ($charset eq "koi") { $text =~ tr/\xB3\xE0-\xFF/\xA3\xC0-\xDF/; }
> elsif ($charset eq "win") { $text =~ tr/\xA8\xC0-\xDF/\xB8\xE0-\xFF/; }
> elsif ($charset eq "alt") { $text =~ tr/\xF0\x80-\x9F/\xF1\xA0-\xAF\xE0-\xEF/;
> }
> elsif ($charset eq "mac") { $text =~ tr/\335\200-\237/\336\340-\377/; }
> elsif ($charset eq "iso") { $text =~ tr/\241\260-\317/\361\320-\357/; }
> else { die "getCharsetScore: dont know charset $charset\n" }
>
> то все работает, а вот с переменными почему-то затык.
>
> Хочется с этим разобраться, потому что вышеприведенный кусок некрасив,
> и, что более существенно, если от него избавиться, то для добавления-
> удаления кодировки в тексте программы надо будет править только одно
> место.
так поставь '\' перед $text в своем eval и наслаждайся.
eval "\$text =~ tr/$from/$to/";
Best wishes, Paul.
--- ifmail v.2.15dev5
* Origin: Trans World Airlines (TWA) (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3555c1298c54.html, оценка из 5, голосов 10
|