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]