LINUX.ORG.RU

iconv: I/O error

 , ,


0

1

Доброго времени суток. При добавлении в скрипт строки подключения к БД

my $dbh = DBI->connect("DBI:mysql:calls:localhost","user","pass");

такой (и аналогичные) вызов iconv

my $client = `iconv -c -f WINDOWS-1251 -t KOI8-R $file | grep -i -m 1 клиент:`;
выдает ошибку iconv: I/O error. Значение в переменную все равно попадает. Если закомментировать строку с подключением - iconv выполняется без ошибки. В перле новичок, хочу распарсить html с детализацией по мобильной связи одного известного провайдера, html приходит в cp1251. ЧЯДНТ?

P.S.

[root@host ~]# uname -a
FreeBSD gw 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255898: Fri Sep 27 03:52:52 UTC 2013     root@bake.isc.freebsd.org:/usr/obj/usr/src/sys/GENERIC  i386
[root@host ~]# perl -v

This is perl 5, version 14, subversion 2 (v5.14.2) built for i386-freebsd-64int


для парсинга хтмл есть свои библы. можете поглядеть в сторогу Mojo::UserAgent (загрузка урл), Mojo::DOM (парсинг хтмл).

bvn13 ★★★★★
()
Ответ на: комментарий от bvn13

Я не сомневался, что существуют библиотеки для удобного парсинга html, спасибо что подсказали. Но вопрос был изначально не в этом. Тут, скорее, вопрос академический, нежели практический: как подключение к mysql может влиять на iconv?

dfc
() автор топика

Через strace -f посмотри что там за I/O error.

Olegymous ★★★
()
Ответ на: комментарий от SandySandy

Менять местами не хотелось бы, т.к. присвоение значений перемнным идет в цикле (по всем html файлам в текущей папке), а подключение - 1 раз в начале.

По truss -f вижу ERR32 broken pipe, но почему - не понимаю, ибо не силен :(

dfc
() автор топика
Ответ на: комментарий от dfc

Очевидно потому, что у тебя в грепе стоит опция -m1, которая говорит, что он ищет 1 совпадение и завершается. Таким образом греп нашёл совпадение, завершился, тем самым разорвал канал (pipe). iconv'у прилетел сигнал PIPE, он его перехватил напечатал сообщение о том самом I/O error и завершился (видимо).

Olegymous ★★★
()

-f WINDOWS-1251 -t KOI8-R

Что за ад? Я бы, будь мейнтейнером libiconv, в библиотеку бы навставлял assert(0) на такие преобразования

lovesan ★★★
()
Ответ на: комментарий от lovesan

FreeBSD

У них иначе даже на консоль ничего не вывести.

anonymous
()
Ответ на: комментарий от Olegymous

но почему тогда если закомментировать строку подключения к mysql этой ошибки не происходит?

dfc
() автор топика
Ответ на: комментарий от Olegymous

Абсолютно. Оставляю только строку с подключением (даже без чтения/записи в БД) и цикл с присвоением переменных - есть ошибка, комментирую строку с подключение - нет ошибки.

dfc
() автор топика
Ответ на: комментарий от dfc

А в выводе strace что-нибудь на эту тему меняется? Выложи strace с закоменченным и нет.

Olegymous ★★★
()
Последнее исправление: Olegymous (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.