Bom dia !<br><br>Estou fazendo um spider e estou tendo problemas para retirar o  objeto WWW::Scripter da memória.<br><br>Esse módulo é bem interessante para evitar que você tenha que estudar o Javascript que o &#39;brilhante&#39; designer fez e devolve a saída desse Javascript em formato HTML. Até aí, tudo bem! Funciona! Maravilha!<br>
<br>O problema é que eu preciso que isso funcione em um spider onde eu tenho várias iterações com esse objeto, e para cada &#39;get&#39; que ele faz em cima de uma página, ele reserva um novo espaço na memória que não libera nunca. <br>
<br>Lendo a documentação, eu vi que existe um método &#39;clear_history&#39;, mas aparentemente não serve para isso que eu estou querendo. Tentei forçar uma chamada para DESTROY, mas também não está funcionando. Abaixo tem um segmento de código que pode ajudar vocês a me ajudarem.<br>
<br>&lt;code&gt;<br>.<br>.<br>.<br>    my $scripter = WWW::Scripter-&gt;new;<br>    $scripter-&gt;use_plugin(&#39;JavaScript&#39;);<br>    $scripter-&gt;max_history(1);<br>    while(defined($tree)){<br>        my @products = $tree-&gt;findnodes(&quot;/html/body/div[\@id=&#39;container&#39;]/div[\@id=&#39;geral&#39;]/center/div[\@id=&#39;centro&#39;]/div[\@id=&#39;centro2_int&#39;]/div[\@id=&#39;produtos-vitrine&#39;]/div&quot;);<br>
<br>        print &quot;\n\n#################################ACHEI &quot; . @products . &quot;PRODUTOS!\n\n&quot;;<br>        foreach my $p(@products){<br>            if($p){<br>                print &quot;\n\n&quot; . $p-&gt;as_HTML;<br>
                #link/imagem<br>                my ($prelink) = $p-&gt;findnodes(&#39;a&#39;);<br>                if($prelink) {<br>                    my $u  = $prelink-&gt;attr(&#39;href&#39;);<br>                    $u = decode_entities($u);<br>
                    $self-&gt;product-&gt;url_original($u);<br>                    $self-&gt;product-&gt;url($self-&gt;product-&gt;url_original. &#39;&amp;frompartner=3212&#39;);<br>                    my $preimg = $prelink-&gt;look_down(_tag =&gt; &#39;img&#39;);<br>
                    if($preimg){<br>                        $self-&gt;product-&gt;imagem($preimg-&gt;attr(&#39;src&#39;));<br>                    }<br>                <br>                    #Capturando detalhes<br>#                    print &quot;\n\nURL: &quot; . $self-&gt;product-&gt;url_original . &quot;\n\n&quot;;<br>
                    eval{$self-&gt;agent-&gt;get($self-&gt;product-&gt;url_original)};<br>                    if($self-&gt;agent-&gt;success){<br>                        $scripter-&gt;get($self-&gt;product-&gt;url_original);<br>
                        my $dtree     = HTML::TreeBuilder::XPath-&gt;new_from_content($self-&gt;agent-&gt;content);<br>                        $self-&gt;get_detail($dtree , $scripter);<br>                     }else {<br>.<br>
.<br>.<br>                     }<br>.<br>.<br>.<br>     }<br>}<br><br>&lt;/code&gt;<br><br>Este é um segmento de código onde eu já observei que ocorre o problema mencionado mais acima.<br><br>Por favor não comentem sobre &#39;use strict e use warnings&#39; !! Ambos estão devidamente em seus lugares mais acima no código.<br>
<br>Página do módulo:<a href="http://search.cpan.org/%7Esprout/WWW-Scripter-0.010/lib/WWW/Scripter.pod"><b>WWW::Scripter</b></a><br><br><br><br>Obrigado!<br><br>-- <br>André Garcia Carneiro<br>Analista/Desenvolvedor Perl<br>
(11)82907780<br>