[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