ah... o syslog faz isso, que eu uso por debaixo dos panos<div><br></div><div><div><br></div><div>use Sys::Syslog;</div><div><br></div><div>openlog &#39;expurgo&#39;,&quot;pid,ndelay,nowait&quot;,&quot;local0&quot;;</div><div>

<br></div><div>eval { die &#39;ops&#39;;};</div><div><br></div><div>print $@;</div><div><br></div><div>syslog &quot;info&quot;,$@;</div><div><br></div><div>print &quot;\no syslog esta apagando essa coisa -&gt; &#39;&quot; .$@ . &quot;&#39;\n&quot;;</div>

<div><br></div><div>Q puxa :/</div><br><div class="gmail_quote">2010/9/21 Eden Cardim <span dir="ltr">&lt;<a href="mailto:edencardim@gmail.com">edencardim@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

2010/9/21 Tiago Peczenyj &lt;<a href="mailto:tiago.peczenyj@gmail.com">tiago.peczenyj@gmail.com</a>&gt;:<br>
<div><div></div><div class="h5">&gt; segue codigo exemplo...<br>
&gt; use English;<br>
&gt; ...<br>
&gt; $midia-&gt;{&#39;erros&#39;}= [];<br>
&gt; eval{<br>
&gt; $bytes = $midia-&gt;qqcoisa();<br>
&gt; };<br>
&gt; if($EVAL_ERROR){<br>
&gt; print &quot;vou adicionar o $EVAL_ERROR aqui\n&quot;;<br>
&gt; $erros+=1;<br>
&gt; My::Logger::log(&quot;err&quot;,$EVAL_ERROR,$id);<br>
&gt; push @{$midia-&gt;{&#39;erros&#39;}}, $EVAL_ERROR;<br>
&gt; next; # esta dentro de um foreach<br>
&gt; }<br>
&gt;<br>
&gt; Beleza, tudo parece bom, exceto que $EVAL_ERROR  simplesmente DESAPARECE<br>
&gt; depois do log(xxx);<br>
&gt; Eu revisei e esta funcao nao tem como alterar os parametros recebidos.<br>
&gt; Existe algum problema ao ler multiplas vezes o erro de um eval???<br>
&gt; Pode ser um problema de concorrencia entre multiplas threads (eu rodo isso<br>
&gt; dentro de um Test::Simple)? E é um problema deterministico.<br>
&gt; Eu tive q pegar o erro na primeira linha dentro do IF... para mim isso é<br>
&gt; mazica... :/<br>
<br>
</div></div>E é uma mágica irritante. Em perldoc -f eval: &quot;...If there was no<br>
error, $@ is guaranteed to be the empty string...&quot;<br>
ou seja, a função log() provavelmente está rodando um eval<br>
bem-sucedido lá dentro, o que está colocando a string vazia em<br>
$EVAL_ERROR. Para contornar o problema, atribua o erro para outra<br>
variável logo após o eval original, e use essa variável invés da<br>
variável padrão de erro.<br>
<br>
--<br>
<font color="#888888">   Eden Cardim       Need help with your Catalyst or DBIx::Class project?<br>
  Code Monkey                    <a href="http://www.shadowcat.co.uk/catalyst/" target="_blank">http://www.shadowcat.co.uk/catalyst/</a><br>
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?<br>
<a href="http://blog.edencardim.com/" target="_blank">http://blog.edencardim.com/</a>            <a href="http://www.shadowcat.co.uk/servers/" target="_blank">http://www.shadowcat.co.uk/servers/</a><br>
_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br><br><a href="http://pacman.blog.br">http://pacman.blog.br</a><br>
</div>