====== 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}}