Здравствуй, любимое сообщество!
Подскажи мне, пожалуйста, что мне надо почитать/посмотреть, чтобы понять
следующую вещь.

Вот есть у меня mod_perl с handlers
Есть у меня там функция такая, которая дальше вызывается в обработчиках,
она не вызывается при запуске, а только когда пришел первый запрос:

package MyLib::Handler;
use MyLib::Obj;
sub obj {
  our $obj;
  warn 'obj ', $obj, $obj->{ pid } if $obj;
  return $obj if $obj;
  $obj = MyLib::Obj->new( pid => $$);
}

Вот этот Obj;
package MyLib::Obj;
sub new {
    my $package = shift;
    my $opt = {@_};
    my $self = {};
    $self->{ pid } = $opt->{ pid };
    return bless($self, $package);
}

pid сюда добавлен для дебага, чтобы в логах было видно, кто создал obj

и обвес на warn
BEGIN {
        $SIG{'__WARN__'} = sub {
        warn $$.' --> '.$_[0] ;
        };
}

И получается, что в логах выглядит вот так

16373 --> obj MyLib::Obj=HASH(0x80461c420) 16373
16372 --> obj MyLib::Obj=HASH(0x80461c420) 16372

Почему тут одинаковые адреса?
Сообщество, помоги!
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить