Sortie non-zéro du script Perl

Dans mon script Perl, si j’utilise exit(-1) , le script se ferme. Mais si j’utilise exit(-433) ou exit(-233) , il ne sort pas. Pourquoi? Un exemple suit.

 if ($result1[0] eq "Error") { print "Error occurred while updating https route\n"; print "Error returned from the script:\n"; print $result1[1]; exit(-377); } 

Exécutez perlbug pour soumettre un rapport de bogue. Malgré votre argument incorrect, cela ne devrait pas empêcher la exit du fonctionnement.

Comme vous pouvez le voir (par le visage que y n’est jamais imprimé), je ne peux pas reproduire cela sur un système Linux:

 $ perl -E'say "x"; exit($ARGV[0]); say "y";' -- -377 ; echo $? x 135 $ perl -E'say "x"; exit($ARGV[0]); say "y";' -- -1 ; echo $? x 255 $ perl -E'say "x"; exit($ARGV[0]); say "y";' -- -433 ; echo $? x 79 $ perl -E'say "x"; exit($ARGV[0]); say "y";' -- -233 ; echo $? x 23 

0..255 sont acceptables sur les systèmes Unix. 0..65535 sous Windows.

Je restreindrais même la valeur de sortie à 0..127, pour la raison suivante: Si votre programme (sur Unix) est tué par le signal N, la valeur de sortie est définie sur N + 128. Par conséquent, si vous utilisez des valeurs de sortie plus élevées, vous ne pouvez pas distinguer une sortie “normale” d’une sortie forcée par un signal.