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;

  • 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");

  • t2.pl

    #!/usr/bin/perl
    
    print("hello!\n");
    
    exit;

  • t3.pl

    #!/usr/bin/perl
    
    print("Good!\n");
    
    exit(99);

  • jonathan@jonathan1:~$ perl t1.pl
    hello!
    [0][0]
    Good!
    [99][25344]

  • tech/perl_exit_code.txt
  • 上一次變更: 2022/03/31 15:46
  • jonathan