<p dir="ltr">Hmm </p>
<p dir="ltr">Se fosse uma aplicação tipo REST você poderia criar o processo com as novas mudanças e depois matar o processo desatualizado e passar o trabalho só pro novo. </p>
<p dir="ltr">Isso não é exatamente um reload, mas é o mais seguro que se pode fazer </p>
<div class="gmail_quote">Em 26/07/2013 09:11, "Blabos de Blebe" <<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>> escreveu:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Oi pessoal,<div><br></div><div>Ultimamente eu tenho brincado com carregamento dinâmico e surgiu a necessidade de fazer um "reload" de módulos que eu carreguei dinamicamente, pois eu quero subir uma versão atualizada de um módulo sem reiniciar a aplicação.</div>


<div><br></div><div>Suponham o seguinte cenário de teste:</div><div><br></div><div>while(<>) {</div><div>    reload( 'Foo::Bar' );</div><div>    say Foo::Bar::hello();</div>

<div>}</div><div><br></div><div>Atualmente, eu uso um módulo que faz o load(), então para completar o "reload" eu preciso fazer o "unload":</div><div><br></div><div>sub reload {</div>

<div>    my $module = shift;</div><div><br></div><div>    unload( $module );</div><div>    load( $module );</div><div>}</div><div><br></div><div>Para isso eu dei uma olhada no cpan e encontrei o módulo Class::Unload, mas infelizmente o exemplo que ele tem na sinopse não funciona no meu cenário.</div>


<div><br></div><div>Pesquisando um pouco mais eu encontrei os seguinte código:</div><div><br></div><div>sub unload {</div><div>    my $module = shift;</div><div>    my $filename = to_filename( $module );</div>

<div>    delete $INC{ $filename };</div><div>}</div><div><br></div><div>Esse código faz com que a cada passo do loop o módulo 'Foo::Bar' seja carregado, e as alterações no seu fonte sejam visíveis na aplicação, atingindo o meu objetivo.</div>


<div><br></div><div>Entretanto, essa solução está me cheirando a gambiarra. Eu estou preocupado com memory leaks e coisas do gênero, pois pretendo utilizar esse "reload" em uma aplicação que teoricamente rodaria indefinidamente.</div>


<div><br></div><div>Vocês poderiam apontar outros módulos que lidam com esse problema de forma segura, ou documentação mais específica onde eu possa entender melhor o processo?</div><div><br></div><div>

Mais do que uma solução para o meu cenário, eu estou procurando entender melhor o processo.</div><div><br></div><div>[]'s</div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div>