[Moscow.pm] mod_perl + Object Oriented

Natalya Savenkova name2rnd на gmail.com
Пн Ноя 24 10:14:12 PST 2014


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

Вот есть у меня 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

Почему тут одинаковые адреса?
Сообщество, помоги!
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20141124/b7605705/attachment.html>


Подробная информация о списке рассылки Moscow-pm