重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Windows2000+ActivePerlの環境です。
dieによって終了した場合、そのスクリプトを呼び出した元のバッチなどでステータスを確認すると、
通常は「255(-1)」になっています。

これが、場合によっては、「1」や「9」になる場合があるようなのですが、理由が分かりません。

例えば、スクリプトとして

if(@ARGV < 1){
die "no argument stopped"; #★A★
}
$cmd = "hogehoge ... ...";
$rc = system($cmd);
$rc >>= 8; # system()からの戻り値は8ビットシフト
if($rc != 0){
die "ERROR $cmd (rc=$rc) stopped"; #★B★
}

のようにしていた場合、
★A★で終了した場合は、戻り値255
なのに対して、
★B★で終了した場合は、戻り値1や、9
になってしまいます。
(それぞれ戻り値は上位呼び出し元で確認しています)

この現象の理由について、教えてください。
よろしくお願いします。

A 回答 (1件)

perldoc -f die


を読んで貰うとわかると思いますが
die で終了したときの終了ステータスは
$! || ($? >> 8) || 255
です
    • good
    • 0
この回答へのお礼

perldoc -f die
の内容を確認いたしまして、理解できました。
ご教示ありがとうございました。

お礼日時:2006/04/27 18:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!