[Moscow.pm] перекодировка

Ruslan Zakirov ruz на bestpractical.com
Чт Сен 5 14:44:06 PDT 2013


Нормально `use open` заюзать так:
http://gist.github.com/6456522

Но еще более верно:

use open ':locale';

И запускать с нужной локалью:

LANG="ru_RU.cp1251" gtrans.pl

Или если не может тулза установить переменную окружения, то:

gtrans.pl | iconv -t cp1251

Если и так не может, то тулзу обернуть в gtrans-cp1251.sh :)

Или --encoding аргумент добавить, разбор аргументов в BEGIN {}, а потом use
open $encoding? (':std', ":encoding($encoding)") : ':locale';

Кошерно :)



2013/9/5 Nikolay Mishin <mi на ya.ru>

> MoscowPM, добрый день,
>
> Есть скрипт
> перевода гугла из командной строки
> https://github.com/mishin/gists/blob/master/gtrans.pl
> запускается
>
> gtrans.pl --from en --to ru --text "This is a test"
>
> из командной строки
> гугл выдает строки в KOI
>
> я парсю вывод гугла:
>
>  my @matches =
>       $html =~
> m{onmouseout="this.style.backgroundColor='#fff'">(.*?)</span>}g;
>
>     foreach my $translated_string (@matches) {
>         my $interm_var =
>           Convert::Cyrillic::cstocs( 'KOI8', 'UTF8', $translated_string );
>         Encode::from_to( $interm_var, 'utf-8', 'cp1251' );
>         say $interm_var;
>     }
>
> вопрос, можно ли строку
>
>           Convert::Cyrillic::cstocs( 'KOI8', 'UTF8', $translated_string );
>         Encode::from_to( $interm_var, 'utf-8', 'cp1251' );
>
> заменить одним преобразованием, чтобы на выходе был win1251?
> у меня этого не получилось
> спасибо
>
> -
> С уважением
> Николай Мишин
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>


-- 
Best regards, Ruslan.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20130906/97d74f70/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm