Intercepter le signal die

Le problème lorsque l’on développe du PERL sous Windows c’est que lors d’un die la console se referme. On peut bien sur lancer PERL via la console mais on n’y pense pas toujours.

C’est pour cela que j’ai décidé d’intercepter le signal die de PERL pour que lorsqu’une erreur intervient, le script attende que j’appuie sur une touche pour continuer.

Le code est très simple :

if ($^O eq "MSWin32") {
    $SIG{__DIE__* = \&win_die;
}

Tous d’abord nous commençons par tester si on est sous Windows (sous Unix je lance forcement mon script dans une console). Si c’est le cas on associe le signal DIE à la fonction win_die.

Voici le code de la fonction win_die:

sub	win_die {
    print "ERROR: ".$_[0];
    print "Press enter to continue\n";
    <STDIN>;
    exit(1);
}

La première ligne permet d’afficher le message d’erreur de die qui est passé en premier paramètre de la fonction, puis à la ligne 3 on attend de lire un retour à la ligne sur l’entrée standard avant de quitter.