[Rio-pm] erro esquisitissimo com eval
Tiago Peczenyj
tiago.peczenyj em gmail.com
Terça Setembro 21 16:25:28 PDT 2010
ah... o syslog faz isso, que eu uso por debaixo dos panos
use Sys::Syslog;
openlog 'expurgo',"pid,ndelay,nowait","local0";
eval { die 'ops';};
print $@;
syslog "info",$@;
print "\no syslog esta apagando essa coisa -> '" .$@ . "'\n";
Q puxa :/
2010/9/21 Eden Cardim <edencardim em gmail.com>
> 2010/9/21 Tiago Peczenyj <tiago.peczenyj em gmail.com>:
> > segue codigo exemplo...
> > use English;
> > ...
> > $midia->{'erros'}= [];
> > eval{
> > $bytes = $midia->qqcoisa();
> > };
> > if($EVAL_ERROR){
> > print "vou adicionar o $EVAL_ERROR aqui\n";
> > $erros+=1;
> > My::Logger::log("err",$EVAL_ERROR,$id);
> > push @{$midia->{'erros'}}, $EVAL_ERROR;
> > next; # esta dentro de um foreach
> > }
> >
> > Beleza, tudo parece bom, exceto que $EVAL_ERROR simplesmente DESAPARECE
> > depois do log(xxx);
> > Eu revisei e esta funcao nao tem como alterar os parametros recebidos.
> > Existe algum problema ao ler multiplas vezes o erro de um eval???
> > Pode ser um problema de concorrencia entre multiplas threads (eu rodo
> isso
> > dentro de um Test::Simple)? E é um problema deterministico.
> > Eu tive q pegar o erro na primeira linha dentro do IF... para mim isso é
> > mazica... :/
>
> E é uma mágica irritante. Em perldoc -f eval: "...If there was no
> error, $@ is guaranteed to be the empty string..."
> ou seja, a função log() provavelmente está rodando um eval
> bem-sucedido lá dentro, o que está colocando a string vazia em
> $EVAL_ERROR. Para contornar o problema, atribua o erro para outra
> variável logo após o eval original, e use essa variável invés da
> variável padrão de erro.
>
> --
> Eden Cardim Need help with your Catalyst or DBIx::Class project?
> Code Monkey http://www.shadowcat.co.uk/catalyst/
> Shadowcat Systems Ltd. Want a managed development or deployment platform?
> http://blog.edencardim.com/ http://www.shadowcat.co.uk/servers/
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
--
Tiago B. Peczenyj
Linux User #405772
http://pacman.blog.br
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20100921/f247e7ad/attachment.html>
Mais detalhes sobre a lista de discussão Rio-pm