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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Use of uninitialized value ... 
V
    Опции темы
infarch
Дата 21.6.2013, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Помогите пожалуйста понять что означает этот варнинг: "Use of uninitialized value within @_ in list assignment at /bb_projekt/docia/perl/lib/Backbone/TB.pm line 289."

В указанном модуле в строке 289 происходит присваивание:
Код

sub set {
    my($self,$columnname,$value) = @_; # line 289
    ...
    ...


Ошибка не моя, из чужого кода. Я даже воспроизвести не могу ( . 
PM MAIL   Вверх
ginnie
Дата 21.6.2013, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



infarch,  с приведенным кодом появление указанной ошибки маловероятно. У меня воспроизводится с таким:
Код

#!/usr/bin/perl

use strict;
use warnings;

sub test {
    my ($var1, $var2, %var3) = @_;
    return;
}


test(1,2,undef,3);



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


Опытный
**


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

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



Так и у меня воспроизводится. Но вот в том то коде не хеш в параметрах стоит, а скаляр...
PM MAIL   Вверх
infarch
Дата 21.6.2013, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Варнинг я устранил, но вот почему он вообще появлялся не могу понять.
Там была вот такая строка: 
Код

$directory_obj->set("ParentDirectory_ID", $dirlookup{$directory_obj->get("ParentDirectory_ID")});

Проблема возникала когда функция $directory_obj->get("ParentDirectory_ID") возвращала undef. Причем если переписать вот так:
Код

my $xxx = $dirlookup{$directory_obj->get("ParentDirectory_ID")};
$directory_obj->set("ParentDirectory_ID", $xxx);

то варнинга опять таки небыло.
PM MAIL   Вверх
ginnie
Дата 21.6.2013, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



infarch,  это мистика какая-то, а что выдает в случае явного указания undef в ключе хэша?

Код

my $xxx = $dirlookup{undef()};


P.S. на тестовый код 
Код

#!/usr/bin/perl

use strict;
use warnings;

sub key { return; }
sub test {
    my ($var1, $var2, $var3) = @_;
    return;
}

my %hash;
test(1,2,$hash{key()});

perl v5.16.2 выдает предупреждения
Код

Use of uninitialized value in hash element at ./undef_test.pl line 13.
Use of uninitialized value within @_ in list assignment at ./undef_test.pl line 8.

похоже $hash{undef()}, если ключа undef() в хэше нет -  это какое-то специальное значение, о котором и выводится отдельное предупреждение

Это сообщение отредактировал(а) ginnie - 21.6.2013, 14:02


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


Опытный
**


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

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



Я уже к сожелению не протестирую. Клиент возрадовался что варнинг пропал, запустил сайт и больше опытов делать не будет. Разве что еще какой варнинг найдет )

PM MAIL   Вверх
infarch
Дата 21.6.2013, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я уже к сожелению не протестирую. Клиент возрадовался что варнинг пропал, запустил сайт и больше опытов делать не будет. Разве что еще какой варнинг найдет )

PM MAIL   Вверх
Cyr
Дата 13.10.2015, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня есть процедура 
Код

sub    AnswerCall{
    my $connectionID = shift;
    #берём трубку
    if (defined $connectionID) {
        my $pdu = $CSTAapdu->encode({svcRequest=>{
                                    invokeID=>10,
                                    serviceID=>2,
                                    serviceArgs=>{
                                        callToBeAnswered=>$connectionID
                                                }
                                            }
                                });    
        send_pdu($pdu);
    }
}

При выполнении my $pdu = $CSTAapdu->encode... warning: 
"Use of uninitialized value in concatenation (.) or string at
        D:/strawberry/perl/vendor/lib/Convert/ASN1/_encode.pm line 60 (#1)
    (W uninitialized) An undefined value was used as if it were already
    defined.  It was interpreted as a "" or a 0, but maybe it was a mistake.
    To suppress this warning assign a defined value to your variables."
Не знаю, в чём проблемма и как исправить
PM MAIL   Вверх
arto
Дата 13.10.2015, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

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



похоже у вас ошибка при инициализации парсера.
мобно посмотреть, что у _encode.pm в строке 60
PM MAIL ICQ   Вверх
Cyr
Дата 13.10.2015, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



arto
там строка
$_[4] .= $op->[cTAG];
PM MAIL   Вверх
arto
Дата 19.10.2015, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

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



отследить, почему в $op->[cTAG] undef.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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