Forum Webscript.Ru
Программирование => Perl => Тема начата: Moroz от 03 Сентября 2007, 19:57:11
-
Доброго времени суток всем!
Не имею опыта работы с Perl.
Стоит такая задача: скачать прайс из инета в виде .xls и закачать его в PostgreSQL. Все это в Linux посредством скриптов shell и Perl.
Первую часть задачи решил. Прайс скачивается и из экселевого формата преобразуется в формат CSV в UTF8 кодировке.
Сейчас нужно произвести кое-какую обработку в с помощью Perl.
Использую модуль Tie::CSV (читает CSV файл в двумерный массив), но столкнулся с проблемой: Tie::CSV не хочет читать поля на русском языке. Поля на английском читает.
Кто может подсказать как решить эту проблему?
-
cpan о существовании модуля Tie::CSV не подозревает, может Tie::Handle::CSV? Если да, чтите багрепорт и рекомендации
http://rt.cpan.org/Public/Bug/Display.html?id=27809
-
Извиняюсь за неточность. Да, это Tie::Handle::CSV.
Посмотрел Вашу ссылку. Там речь идет, насколько я понял, о коде окончания строки ^Z в досовских файлах. В качестве решения предлагается использовать парсер от Text::CSV_XS. Опробовал я этот метод - не работает.
Ищу дальше.
-
Нашел решение здесь
http://pavel.ammosov.ru/ruperl/ru-perl-faq-9.html (http://pavel.ammosov.ru/ruperl/ru-perl-faq-9.html)
Отказался от использования Tie::Handle::CSV в пользу Text::CSV_XS.
Главное для работы с русскими буквами - конструктору new() передать параметр \'binary\'=>1.
Всем спасибо за внимание!