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