[bcn-pm] Sys::AlarmCall

Jose Luis Perez Diez jluis a escomposlinux.org
dij abr 2 00:51:13 PDT 2009


El Wednesday, 1 de April de 2009 15:20:54 Arnau Bria va escriure:
> si qualsevol de les funcions 1 2 i 4 fallés, sortiria amb un exit 2, i
> el programa no continuaria.
> Però quan crido el timeout, dintre de les funcions també tinc exits, i
> això no ho puc tractar, haig de posar returns i evaluar després les
> variables nfs_result...


allarm_call et retorna:
   $Sys::AlarmCall::Timeout si esta trigant molt.
   els valors de die () 
   el valor de sortida del eval

La solució que tens mes  senzilla  es s/\bexit\b/die/g (usar retorns pot 
forçar la refactorialització del codi).

use strict;
use warnings;
use Sys::AlarmCall;

my @Results  = ( alarm_call(1,"{sleep 2}"),
                alarm_call(1,"{die(0)}"),
                alarm_call(1,"{die(1)}"),
                alarm_call(1,"{die(2)}"),
                alarm_call(1,"{return 3}") );
print "$_\tnumeric".-(-$_)."\n " for @Results;

Sortida (perl 5.10)
TIMEOUT numeric+TIMEOUT
 ERROR  numeric+ERROR
Argument "0 at (eval 2) line 3.\n" isn't numeric in negation (-) at arnau.pl 
line 10.
 0 at (eval 2) line 3.
        numeric0
 ERROR  numeric+ERROR
Argument "1 at (eval 3) line 3.\n" isn't numeric in negation (-) at arnau.pl 
line 10.
 1 at (eval 3) line 3.
        numeric1
 ERROR  numeric+ERROR
Argument "2 at (eval 4) line 3.\n" isn't numeric in negation (-) at arnau.pl 
line 10.
 2 at (eval 4) line 3.
        numeric2
 3      numeric3


Més informació sobre la llista de correu Barcelona-pm