[SP-pm] alarm()
Luis Motta Campos
luismottacampos em yahoo.co.uk
Quarta Janeiro 30 01:27:45 PST 2008
Nelson Ferraz wrote:
> Dica: é melhor não testar para "definideness", pois $@ é sempre
> definido depois de um eval:
[snip]
> (Eu sei porque já fui mordido por isso antes :-P)
Boa, Nélson. Você está certo. Do manual do eval:
"If there is a syntax error or runtime error, or a "die" statement is
executed, an undefined value is returned by "eval", and $@ is set to the
error message. If there was no error, $@ is guaranteed to be a null
string."
E assim eu posso reescerver tudo assim:
#!/usr/bin/perl
use strict;
use warnings;
sub processa;
sub busca_info;
local $SIG{ALARM} = sub { die q{Acorda pra cuspir!}; };
for ( 0 .. 10 ) { # para que isso?
alarm 5;
my ($info);
eval { processa( busca_info($_), $_ ); };
if ( $@ eq q{Acorda pra cuspir!} ) {
# teu alarme deu timeout: loga o evento, next.
log(qq{Time out processando $_.});
next;
}
elsif ( $@ ) {
# deu merda, trata erro
}
} # for
__END__
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão SaoPaulo-pm