Пожалуйста. Вместо спасиба, блог пост лучше напишите в стиле было так, а
стало так и темой "Unicode aware web scrapping in command line perl
scripts". Или статью в Pragmatic perl :)

2013/9/6 Nikolay Mishin <[email protected]>

> отлично Руслан
> 1)  если поставить
>
> https://github.com/mishin/gists/blob/314a55efcf99289b1e18db4f49b2874671c84f9c/gtrans2.pl
> use open ':std', OUT => ':encoding(cp1251)';
>  выдает (uname -a
> Linux ubuntu 3.8.0-29-generic #42-Ubuntu SMP Tue Aug 13 19:40:39 UTC 2013
> x86_64 x86_64 x86_64 GNU/Linux
> )
>
> $./gtrans2.pl --from en --to ru --text "This is a test"
> "\x{00d0}" does not map to cp1251 at ./gtrans2.pl line 62.
> "\x{00d1}" does not map to cp1251 at ./gtrans2.pl line 62.
> ..на каждый символ
>

правда пардон я забыл убрать строку
>
> utf8::encode($translated_string);, если без нее, то (при LANG=ru_RU.UTF-8)
>
> $./gtrans2.pl --from en --to ru --text "This is a test"
> а при
> env|grep LANG
> LANG=ru_RU.CP1251
>
> https://github.com/mishin/gists/blob/c1c3a7b0c59f5d61c36ed7056f67d747c1c3b77d/gtrans2.pl
>
> ./gtrans2.pl --from en --to ru --text "This is a test"
> Это тест
> Все супер, значит 1-й вариант работает.   ok
>
> 2) use open ':locale';
>
> https://github.com/mishin/gists/commit/984dd22e001e689d7ab4cd20fbbe46bf9a356633#gtrans2.pl
>
> https://github.com/mishin/gists/blob/984dd22e001e689d7ab4cd20fbbe46bf9a356633/gtrans2.pl
>
> env|grep LANG
> LANG=ru_RU.CP1251
> ./gtrans2.pl --from en --to ru --text "This is a test"
> Это тест
>
> и так работает -ok
> оставляем так
>
> отлично, спасибо за помощь
>
> p.s. c 20 раза http://perldoc.perl.org/utf8.html начинаешь понимать, что
> здесь написано;)
>
> 06.09.2013, 01:44, "Ruslan Zakirov" <[email protected]>:
>
>
> Нормально `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
>
>
>
> --
> С уважением
> Николай Мишин
>
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org
>
>


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

Ответить