Автор Тема: Модуль Lingua::DetectCharset - проблемы  (Прочитано 3311 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
вот надыбал понравившийся мне модуль, но получил маленький облом.
Модуль Lingua::DetectCharset;
А вот проблемы(покажу на простеньком скрипте):

Цитировать

.....
use Lingua::DetectCharset;
    use LWP::Simple;

$str=get("http://server.com.ua");

my $charset = Lingua::DetectCharset::Detect ($str) ;


По идее проблем быть не должно. Но идея великая вещь:

Цитировать

Use of uninitialized value in addition (+) at /usr/local/lib/perl5/site_perl/5.8.5/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/lib/perl5/site_perl/5.8.5/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/lib/perl5/site_perl/5.8.5/Lingua/DetectCharset.pm line 39.
Use of uninitialized value in addition (+) at /usr/local/lib/perl5/site_perl/5.8.5/Lingua/DetectCharset.pm line 40.
Use of uninitialized value in division (/) at /usr/local/lib/perl5/site_perl/5.8.5/Lingua/DetectCharset.pm line 41.



Это малая часть того, что мне выплевываетсся в консоль при запуске скрипта. :(
Ставил модуль при помощи

perl -CPAN -e \'install Lingua::DetectCharset\'

Сам модуль как бы поставился. То есть ошибок не было. А вот эффект - нулевой. Может я не правильно читаю маны и хелпы? Пните, пожалуйста
P.S.: чуть не забыл - ось FreeBSD, может это актуально
Всё будет хорошо - я договорился!

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Модуль Lingua::DetectCharset - проблемы
« Ответ #1 : 03 Мая 2005, 15:22:22 »
А может есть альтернатива данному модулю? Вот ковыряюсь пока. Единственная полумера - отпарсить кодировку в заголовках html страницы. Но она мне не сильно нраиться- много левого всего писать. Да и потом, мне необходимо перекодировать все в нужную мне koi8r
Всё будет хорошо - я договорился!

Оффлайн cr4ck3r

  • Фанат Perl
  • Постоялец
  • ***
  • Сообщений: 146
  • +0/-0
  • 2
    • Просмотр профиля
    • http://perlmonks.org.ru
Модуль Lingua::DetectCharset - проблемы
« Ответ #2 : 03 Мая 2005, 17:09:33 »
Да просто программеры переборщили с изяществом и лаконичностью кода. Бага тут:


my ($Mark, $i);
        for (@Data) {
                s/[\\n\\r]//go;
                $_ = Convert::Cyrillic::toLower ($_, $Code);
                for (split (/[\\.\\,\\-\\s\\:\\;\\?\\!\\\'\\"\\(\\)\\d<>]+/o)) {
                        for $i (0..length ()-$PairSize) {
                                $Mark += ${$Table} {substr ($_, $i, $PairSize)};
                        }
                }
        }

        $Mark;


Это файл /usr/local/lib/perl5/site_perl/5.8.2/Lingua/DetectCharset.pm
со строки 85. Как его изменить чтоб все работало нормально я так и не догнал. Суть здесь в замене содержимого по Таблице, при этом замена идет букв по парам, типа "ЧА" - заменяется на 2 и т.п. Таблица соответствий содержится в ссылке на хэш $Table, здесь как видите происходит какое-то убогое разыменовывание ( ${$Table} {substr ($_, $i, $PairSize)}) логичней было бы так:
 $Table->{substr ($_, $i, $PairSize)}. Но это не решает проблемы.
Короче - тут надо сообща подумать.
Ворота в perl - perlmonks.org.ru

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Модуль Lingua::DetectCharset - проблемы
« Ответ #3 : 04 Мая 2005, 01:46:40 »
:)
Я до этого в принципе сам додумался - ничего другого не оставалось, как разгребать на скорую код. Но в лоб тоже не удалось решить. Решил, что руки кривые. Но так как времени ковыряться особо не было - горит проект, приходиться прыгать...
В общем сейчсас просто пытаюсь по своим таблицам перекодировать, а кодировку выхватываю у сервера. Вот только иногда абракадабра получается, когда не верно сформированы заголовки. Точнее их полное отсутствие на html страничке и сервер выдает свою кодировку по дефаулту, а содержимое в совершенно другой... :( (koi8r - cp1251 - а такое почти повсеместно).
Всё будет хорошо - я договорился!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28