Нормально `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 <[email protected]>

> 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
> [email protected] | http://moscow.pm.org
>
>


-- 
Best regards, Ruslan.
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить