<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Спасибо, так и есть, я потом сам увидел свою ошибку. Сделал именно так, как предложено здесь.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <div class="bloop_sign" id="bloop_sign_1414823265347084032"><div style="font-family:helvetica,arial;font-size:13px">-- <br>ak</div></div> <div style="color:black"><br>From: <span style="color:black">Андрей Фёдоров</span> <a href="mailto:secrethost@gmail.com"><secrethost@gmail.com></a><br>Reply: <span style="color:black">Moscow.pm group</span> <a href="mailto:moscow-pm@pm.org"><moscow-pm@pm.org>></a><br>Date: <span style="color:black">31 October 2014 at 22:44:38</span><br>To: <span style="color:black">Moscow.pm group</span> <a href="mailto:moscow-pm@pm.org"><moscow-pm@pm.org>></a><br>Subject: <span style="color:black"> Re: [Moscow.pm] __PACKAGE__ namespace <br></span></div><br> <blockquote type="cite" class="clean_bq"><span><div><div></div><div>



<title></title>


<div dir="ltr"><span style="color:rgb(0,0,0);font-family:Helvetica,Arial;font-size:13px">@class::STORAGE
- обращение к переменной @STORAGE в модуле 'class'</span><br>
<div><span style="color:rgb(0,0,0);font-family:Helvetica,Arial;font-size:13px"><br>
</span></div>
<div><span style="color:rgb(0,0,0);font-family:Helvetica,Arial;font-size:13px">Чтобы
обратиться к переменной в нужном классе, можно заменить
на</span></div>
<div>
<div><font color="#000000" face="Helvetica, Arial">no strict
'refs';</font></div>
<div style=""><font color="#000000" face="Helvetica, Arial">push
@{"${class}::STORAGE"}, $key;</font></div>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2014-10-31 23:09 GMT+03:00 Artur Kh
<span dir="ltr"><<a href="mailto:khrt@ya.ru" target="_blank">khrt@ya.ru</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
Привет,</div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
возникла необходимость хранить данные в переменной внутри модуля
довольно необычным способом. Примерно так, как это делается в
DBIx::Class когда описывается модель.</div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
Вот пример:</div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgba(0,0,0,1.0);margin:0px;line-height:auto">
<div style="margin:0px">
<div style="margin:0px">
<div style="margin:0px">use strict;</div>
<div style="margin:0px">use warnings;</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">use feature 'say';</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">package BasePackage;</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">my @STORAGE = ('key9');</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">sub add {</div>
<div style="margin:0px">    my ($class, $key) = @_;</div>
<div style="margin:0px">    say "add $class <-
$key";</div>
<div style="margin:0px">    push @class::STORAGE,
$key;</div>
<div style="margin:0px">}</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">sub list {</div>
<div style="margin:0px">    my $class = shift;</div>
<div style="margin:0px">    my @data =
@class::STORAGE;</div>
<div style="margin:0px">    print "$class: ";</div>
<div style="margin:0px">    local $, = ',';</div>
<div style="margin:0px">    say @data;</div>
<div style="margin:0px">}</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">package FirstPackage;</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">our @ISA = ('BasePackage');</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">__PACKAGE__->add('key0');</div>
<div style="margin:0px">__PACKAGE__->add('key1');</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">package SecondPackage;</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">our @ISA = ('BasePackage');</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">__PACKAGE__->add('key2');</div>
<div style="margin:0px">__PACKAGE__->add('key3');</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">package main;</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">FirstPackage->list;</div>
<div style="margin:0px">SecondPackage->list;</div>
<div style="margin:0px"><br></div>
<div style="margin:0px">1;</div>
<div style="margin:0px"><br></div>
</div>
</div>
</div>
<div>И вот вывод:</div>
<div><br></div>
<div>
<div>$ perl <a href="http://package.pl" target="_blank">package.pl</a></div>
<div>add FirstPackage <- key0</div>
<div>add FirstPackage <- key1</div>
<div>add SecondPackage <- key2</div>
<div>add SecondPackage <- key3</div>
<div>FirstPackage: key0,key1,key2,key3</div>
<div>SecondPackage: key0,key1,key2,key3</div>
</div>
<div><br></div>
<div>Как видно набор значений выводится идентичный для обоих
модулей, хотя задумывалось иначе.</div>
<div><br></div>
<div>Вот это я ожидал увидеть:</div>
<div><br></div>
<div>
<div>FirstPackage: key0,key1</div>
<div>SecondPackage: key2,key3</div>
</div>
<div><br></div>
<div>Как мне получить на выходе ожидаемый вывод?</div>
<div><span class="HOEnZb"><font color="#888888"><br></font></span></div>
<div>
<div style="font-family:helvetica,arial;font-size:13px">
<span class="HOEnZb"><font color="#888888">-- <br>
ak</font></span></div>
</div>
</div>
<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote>
</div>
<br></div>


-- <br>Moscow.pm mailing list<br>moscow-pm@pm.org | http://moscow.pm.org<br></div></div></span></blockquote></body></html>