[Perl]Code de 8 lignes à essayer sous Perl sous Linux

Code de 8 lignes à essayer sous Perl sous Linux [Perl] - Perl - Programmation

Marsh Posté le 05-04-2006 à 15:17:22    

Salut,
 
Est ce que l'un de vous pourrait essayer le code suivant sous Linux, en utilisant une version de Perl récente (genre 5.8.7 ou 5.8.8) et me dire ce que lui rend le programme:

Code :
  1. local $SIG{__DIE__} = sub { print "handler\n";};
  2. eval {
  3.     print "In eval\n";
  4.     die "Failed for some reason\n";
  5. };
  6. if ($@) {
  7.     print "Caught exception: $@";
  8. }


 
J'ai trouvé ce bout de code dans la doc de modperl, et il y est dit que Perl est sensé retourner:
 


In eval
handler


 
Or, chez moi, ça retourne :


In eval
handler
Caught exception: Failed for some reason


(pour info, j'utilise Perl (ActivePerl) sus Win32, v 5.8.8
 
Merci!

Reply

Marsh Posté le 05-04-2006 à 15:17:22   

Reply

Marsh Posté le 05-04-2006 à 15:25:23    

meme chose sur une v5.8.7 sous Debian
 
edit: un peu con j'ai pas modperl en fait :D

Message cité 1 fois
Message édité par anapajari le 05-04-2006 à 15:26:23
Reply

Marsh Posté le 05-04-2006 à 15:32:37    

anapajari a écrit :

meme chose sur une v5.8.7 sous Debian
 
edit: un peu con j'ai pas modperl en fait :D


 
Nan, nan, inutile d'avoir modperl, j'ai trouvé ça dans le Perl Reference sur le site de modperl(http://perl.apache.org/docs/genera [...] Techniques)
mais ça concerne Perl en général.
 
Bref, ce qu'ils disent ne marche pas! C'est un peu ça qui est chiant avec ces modules: les docs ne sont souvent pas à jour, et pour ma part, vu que je tourne sous Win32, quand quelque chose ne marche pas, ça vient toujours me faire douter que ça vient de ma distridution de Perl qui n'est pas bonne, alors que des fois, ce sont les docs qui ne sont pas à jour...
 
Merci en tout cas ;)

Reply

Marsh Posté le 02-05-2006 à 16:53:52    

je ne voi pas le PB :??:
le script fonctionne bien à mon avis :
 

Code :
  1. local $SIG{__DIE__} = sub { print "handler\n";};


je ne me rappelle plus ce que ca veut dire (ca fait trop longtemps que j'ai pas touché à Perl)

Code :
  1. eval {    print "In eval\n";    die "Failed for some reason\n";};


évalue une protion de code et si c'est du Perl l'exécute :
c'est bien du Perl, affiche "In eval" retour à la ligne
tue l'excution du "sous script" et affiche "Failed for some reason" retour à la ligne  

Code :
  1. if ($@) {    print "Caught exception: $@";}


affiche l'erreur "Failed for some reason"  s'il y en a une !!
 
donc le script fonctionne à merveille ;)
 
avant de critiquer, il faut d'abord comprendre :jap:


---------------
Tout à commencé par un rêve...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed