Ничего не знаю про mod_perl, но адреса и так одинаковые у разных
процессов скопированных из одного (это в случае с fork)

$ perl -E 'fork; say $$, " ", {}'
27667 HASH(0xf0b998)
27668 HASH(0xf0b998)



24 ноября 2014 г., 21:14 пользователь Natalya Savenkova
<[email protected]> написал:
> Здравствуй, любимое сообщество!
> Подскажи мне, пожалуйста, что мне надо почитать/посмотреть, чтобы понять
> следующую вещь.
>
> Вот есть у меня 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
>
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить