<div>отлично Руслан</div><div>1)  если поставить<br />https://github.com/mishin/gists/blob/314a55efcf99289b1e18db4f49b2874671c84f9c/gtrans2.pl<br /><div><span>use</span> <span>open</span> <span>':std'</span><span>,</span> <span>OUT</span> <span>=></span> <span>':encoding(cp1251)'</span><span>;</span></div></div><div> выдает (uname -a<br />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<br />)</div><div> </div><div>$./gtrans2.pl --from en --to ru --text "This is a test"<br />"\x{00d0}" does not map to cp1251 at ./gtrans2.pl line 62.<br />"\x{00d1}" does not map to cp1251 at ./gtrans2.pl line 62.</div><div>..на каждый символ</div><div> </div><div>правда пардон я забыл убрать строку</div><div><pre><span>utf8::</span><span>encode</span><span>(</span><span>$translated_string</span><span>);, если без нее, то (при LANG=ru_RU.UTF-8)</span></pre></div><div>$./gtrans2.pl --from en --to ru --text "This is a test"<br /> </div><div>а при</div><div>env|grep LANG<br />LANG=ru_RU.CP1251</div><div>https://github.com/mishin/gists/blob/c1c3a7b0c59f5d61c36ed7056f67d747c1c3b77d/gtrans2.pl</div><div> </div><div>./gtrans2.pl --from en --to ru --text "This is a test"<br />Это тест</div><div>Все супер, значит 1-й вариант работает.   ok</div><div> </div><div>2) use open ':locale';</div><div><a href="https://github.com/mishin/gists/commit/984dd22e001e689d7ab4cd20fbbe46bf9a356633#gtrans2.pl">https://github.com/mishin/gists/commit/984dd22e001e689d7ab4cd20fbbe46bf9a356633#gtrans2.pl</a></div><div><a href="https://github.com/mishin/gists/blob/984dd22e001e689d7ab4cd20fbbe46bf9a356633/gtrans2.pl">https://github.com/mishin/gists/blob/984dd22e001e689d7ab4cd20fbbe46bf9a356633/gtrans2.pl</a></div><div> </div><div>env|grep LANG<br />LANG=ru_RU.CP1251<br />./gtrans2.pl --from en --to ru --text "This is a test"<br />Это тест</div><div> </div><div>и так работает -ok</div><div>оставляем так</div><div> </div><div>отлично, спасибо за помощь</div><div> </div><div>p.s. c 20 раза <a href="http://perldoc.perl.org/utf8.html">http://perldoc.perl.org/utf8.html</a> начинаешь понимать, что здесь написано;)</div><div> </div><div>06.09.2013, 01:44, "Ruslan Zakirov" <ruz@bestpractical.com>:</div><blockquote type="cite"><div><div> </div><div>Нормально `use open` заюзать так:</div><a href="http://gist.github.com/6456522">http://gist.github.com/6456522</a><br /><div> </div><div>Но еще более верно:</div><div> </div><div>use open ':locale';</div><div> </div><div>И запускать с нужной локалью:</div><div> </div><div>LANG="ru_RU.cp1251" <a href="http://gtrans.pl/">gtrans.pl</a></div><div> </div><div>Или если не может тулза установить переменную окружения, то:</div><div> </div><div><a href="http://gtrans.pl/">gtrans.pl</a> | iconv -t cp1251</div><div> </div><div>Если и так не может, то тулзу обернуть в gtrans-cp1251.sh :)</div><div> </div><div>Или --encoding аргумент добавить, разбор аргументов в BEGIN {}, а потом use open $encoding? (':std', ":encoding($encoding)") : ':locale';</div><div> </div><div>Кошерно :)</div><div> </div></div><div><br /><br /><div>2013/9/5 Nikolay Mishin <span><<a href="mailto:mi@ya.ru" target="_blank">mi@ya.ru</a>></span><br /><blockquote style="margin:0 0 0 0.8ex;border-left:1px #ccc solid;padding-left:1ex;"><div>MoscowPM, добрый день,</div><div> </div><div>Есть скрипт</div><div>перевода гугла из командной строки</div><div><a href="https://github.com/mishin/gists/blob/master/gtrans.pl" target="_blank">https://github.com/mishin/gists/blob/master/gtrans.pl</a></div><div>запускается</div><div><pre><span><a href="http://gtrans.pl/" target="_blank">gtrans.pl</a> --from en --to ru --text "This is a test"<br /><br />из командной строки<br />гугл выдает строки в KOI<br /><br />я парсю вывод гугла:<br />
</span></pre><div> <span>my</span> <span>@matches</span> <span>=</span></div><div>      <span>$html</span> <span>=~</span> <span>m{onmouseout="this.style.backgroundColor='#fff'">(.*?)</span>}g</span><span>;</span></div><div> </div><div>    <span>foreach</span> <span>my</span> <span>$translated_string</span> <span>(</span><span>@matches</span><span>)</span> <span>{</span></div><div>        <span>my</span> <span>$interm_var</span> <span>=</span></div><div>          <span>Convert::Cyrillic::</span><span>cstocs</span><span>(</span> <span>'KOI8'</span><span>,</span> <span>'UTF8'</span><span>,</span> <span>$translated_string</span> <span>);</span></div><div>        <span>Encode::</span><span>from_to</span><span>(</span> <span>$interm_var</span><span>,</span> <span>'utf-8'</span><span>,</span> <span>'cp1251'</span> <span>);</span></div><div>        <span>say</span> <span>$interm_var</span><span>;</span></div><div>    <span>}</span></div><div> </div><div><span>вопрос, можно ли строку</span></div><div> </div><div><div>          <span>Convert::Cyrillic::</span><span>cstocs</span><span>(</span> <span>'KOI8'</span><span>,</span> <span>'UTF8'</span><span>,</span> <span>$translated_string</span> <span>);</span></div><div>        <span>Encode::</span><span>from_to</span><span>(</span> <span>$interm_var</span><span>,</span> <span>'utf-8'</span><span>,</span> <span>'cp1251'</span> <span>);</span></div><div> </div><div><span>заменить одним преобразованием, чтобы на выходе был win1251?</span></div><div><span>у меня этого не получилось</span></div><div><span>спасибо</span></div></div></div><div> </div><div>- <br /><div>С уважением</div><div>Николай Мишин<br /><div> </div></div></div><br />--<br /> Moscow.pm mailing list<br /> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a><br /> </blockquote></div><br /><br /><div> </div>-- <br />Best regards, Ruslan.</div>,<p>-- <br />Moscow.pm mailing list<br /><a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/">http://moscow.pm.org</a></p></blockquote><div> </div><div> </div><div>-- <br /><div>С уважением</div><div>Николай Мишин<br /><div> </div></div></div>