Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диагностическое сообщение, Lingua::DetectCharset 
:(
    Опции темы
SkoobyDoo
Дата 11.9.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Доброго времени суток! Когда выполняю скрипт, который определяет кодировку, он мне выдает 

Код

Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
Use of uninitialized value in addition (+) at /usr/local/share/perl/5.8.8/Lingua/DetectCharset.pm line 85.
UTF8




Чтобы это могло значить?

Сам скрипт:
Код

#!/usr/bin/perl -w

use strict;
use Lingua::DetectCharset;


my $Buffer = "Привет";
my $Charset = Lingua::DetectCharset::Detect ($Buffer);

print $Charset, "\n";



Это сообщение отредактировал(а) SkoobyDoo - 11.9.2008, 21:46
PM MAIL   Вверх
sir_nuf_nuf
Дата 12.9.2008, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



SkoobyDoo, это значит, что автор модуля Lingua::DetectCharset не утруждал себя тестированием и прагмой use wrnings;

Как второй возможный вариант: вы скормили ему данные которые по смыслу своему не являются текстом, 
поэтому алгоритм работает в нестандартном режиме и такое выдает... хотя это опять же на совести автора модуля.

Проблема может быть в том, что перл не распознает ваш "привет" как utf8 строку.
по пробуйте что ли указать use utf8; что бы perl точно правильно ваш "привет" прочитал.

Это сообщение отредактировал(а) sir_nuf_nuf - 12.9.2008, 00:07


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
ginnie
Дата 12.9.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Уважаемый SkoobyDoo, sir_nuf_nuf прав, во всем виноват автор модуля. Вот фрагмент с 85 строкой (там, где сложение). 

Код

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, она объявляется, но не инициализируется 0, далее она используется в сложении, что и приводит к появлению предупреждений.

Это сообщение отредактировал(а) ginnie - 12.9.2008, 10:32


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
SkoobyDoo
Дата 12.9.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



добавил 
use warnings;
ошибки исчезли.
Как написано в "Баране", флаг -w действует по принципу "все или ничего". Как я понял его действия распространяются и на модули сторонних программистов (Lingua::DetectCharset). 

Это сообщение отредактировал(а) SkoobyDoo - 12.9.2008, 17:23
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.5300 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.