В письме Monday 28 February 2011 09:49:51 Ivan Petrov написал:
> > > получается что каллбек цепляет ссылку на $self и из за него деструктор > > > вызван не может быть до тех пор пока handle не уничтожится. > > > в случае с просто ссылками - понятно: weaken на них. а здесь куда можно > > > weaken натравить чтобы деструктор у такого объекта работал? > > > > После $self = shift; добавить weaken($self); > > В этом случае если эта работа делается внутри конструктора, то добавление > такого weaken приводит к тому что вместо указателя на объект возвращается > какая-то ахинея. У вас объект уничтожается раньше, чем вы его присвоить успеваете. Такое может быть и не в конструкторе (даже в примере, который вы приводили), если использовать класс так: "YourClass->new()->method()". Тогда и внутри не конструктора объект уничтожится. Решение с my $self2 = $self; weaken($self2); рядом уже предложили. -- Alexander Lourier, http://aml.rulezz.ru/ -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
