<br><br><div class="gmail_quote">30 июля 2009 г. 13:53 пользователь Alex Shatlovsky <span dir="ltr">&lt;<a href="mailto:shatlovsky@gmail.com">shatlovsky@gmail.com</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Привет,<br>
<br>
Путем последовательного усечения выяснил, что проблема в<br>
последовательности строк:<br>
print STDERR &quot;$ref\n&quot;;<br>
next unless $ref;<br>
<br>
Именно из-за нее вызов Devel::Size::total_size( $ref ) корректно<br>
отрабатывает только один раз.<br>
Второй раз возвращается 0.<br>
<br>
Если поменять строки местами, то все отрабатывает как надо.<br>
<br>
В тред призываются гуру perl internals. :-)</blockquote><div><br></div><div>привет с лепры?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
<br>
===========================================<br>
#!/usr/bin/perl<br>
<br>
use strict;<br>
use warnings;<br>
<br>
use Data::Dumper;<br>
use Devel::Size;<br>
<br>
TestGreedy::init();<br>
<br>
for (1..2) {<br>
    {<br>
        no strict;<br>
        my $name = &#39;TestGreedy::SPAM&#39;;<br>
        for my $type (qw(SCALAR ARRAY REF HASH)){<br>
            print STDERR &quot;$type\n&quot;;<br>
            my $ref = *{$name}{$type};<br>
            print STDERR &quot;$ref\n&quot;;<br>
            next unless $ref;<br>
            print Devel::Size::total_size( $ref ), &quot;\n&quot;;<br>
        }<br>
    }<br>
}<br>
<br>
exit;<br>
<div class="im"><br>
package TestGreedy;<br>
<br>
use vars qw(<br>
</div>    $SPAM<br>
);<br>
<br>
sub init {<br>
<div class="im">    my $f =   &quot;x&quot; x 1024 x 1024 ;<br>
</div><div class="im">    foreach my $i (1 .. 50 ) {<br>
        $SPAM-&gt;{$i} = $i . $f;<br>
    }<br>
}<br>
</div>===========================================<br>
<br>
<br>
--<br>
<div class="im"><br>
2009/7/29 Ruslan Zakirov &lt;<a href="mailto:ruslan.zakirov@gmail.com">ruslan.zakirov@gmail.com</a>&gt;:<br>
&gt; Там где-то было написано про кеширование.<br>
&gt;<br>
&gt; 2009/7/29 Alex Shatlovsky &lt;<a href="mailto:shatlovsky@gmail.com">shatlovsky@gmail.com</a>&gt;:<br>
&gt;&gt; Привет,<br>
&gt;&gt;<br>
&gt;&gt; 2009/7/29 Ruslan Zakirov &lt;<a href="mailto:ruslan.zakirov@gmail.com">ruslan.zakirov@gmail.com</a>&gt;:<br>
&gt;&gt;&gt; Вот так где-то. Патч к B::TerseSize и скрипт посмотреть на результат.<br>
&gt;&gt;&gt; Осталось в Apache::Status все это вывести красиво.<br>
&gt;&gt;<br>
&gt;&gt; Спасибо!<br>
&gt;&gt; Сходу не завелось, при первом запуске под мод_перл размер показывает<br>
&gt;&gt; правильно, при последующих Devel::Size::total_size() и<br>
&gt;&gt; Devel::Size::size() возвращают 0.<br>
&gt;&gt;<br>
&gt;&gt; Но направление понял, буду разбираться.<br>
&gt;&gt; Еще раз спасибо.<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; С уважением,<br>
&gt;&gt; А.Н.Шатловский<br>
&gt;&gt; --<br>
&gt;&gt; Moscow.pm mailing list<br>
&gt;&gt; <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>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Best regards, Ruslan.<br>
&gt; --<br>
&gt; Moscow.pm mailing list<br>
&gt; <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>
&gt;<br>
<br>
<br>
<br>
</div>--<br>
<div><div></div><div class="h5">С уважением,<br>
А.Н.Шатловский<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>
</div></div></blockquote></div><br>