====== Perl 呼叫回傳碼 ====== 因為大量使用 perl(主程式) 呼叫 perl(子程式) 或其他外部程式, 所以需要判別所呼叫的 perl(子程式) 或其他外部程式執行正確或異常來讓 perl(主程式) 進行後續的處理邏輯 找了一下, perl(子程式) 可以使用 exit($ret_code); 方式讓 perl(主程式) 知道是否處理正確或異常 * 因為 exit 所回傳的變數是包含兩個 bytes, 實際的回傳的值是在變數的前一個 byte, 所以要將變數向右 shift 1 byte(8 bits) * perl 將變數向右 shift 8 bits 語法是 $var = $var >> 8; ===== 簡單的範例說明 ===== ==== perl(主程式) t1.pl ==== * t1.pl #!/usr/bin/perl $r2=system("./t2.pl"); $r2=$r2 >> 8; print("[$r2][$?]\n"); $r3=system("./t3.pl"); $r3=$r3 >> 8; print("[$r3][$?]\n"); ==== perl(子程式) t2.pl (正常離開) ==== * t2.pl #!/usr/bin/perl print("hello!\n"); exit; ==== perl(子程式) t3.pl (異常離開) ==== * t3.pl #!/usr/bin/perl print("Good!\n"); exit(99); ==== 實際執行 ==== * jonathan@jonathan1:~$ perl t1.pl hello! [0][0] Good! [99][25344] ===== 參考網址 ===== * https://stackoverflow.com/questions/7080434/getting-perl-to-return-the-correct-exit-code * https://perlmaven.com/how-to-exit-from-perl-script {{tag>perl}}