$CHILD_ERROR
$?

最後一個 pipe 關閉、反引號 (``) 命令、成功呼叫 wait()waitpid(),或來自 system() 運算子的狀態回傳。這只是傳統 Unix wait() 系統呼叫回傳的 16 位元狀態字 (或偽裝成像這樣)。因此,子程序的退出值實際上是 ($? >> 8),而 $? & 127 會提供程序死於哪個訊號 (如果有的話),而 $? & 128 則會報告是否有核心傾印。

此外,如果 C 中支援 h_errno 變數,則在任何 gethost*() 函數失敗時,其值會透過 $? 回傳。

如果您已為 SIGCHLD 安裝訊號處理常式,則 $? 的值通常會在處理常式外錯誤。

END 子程序內,$? 包含要提供給 exit() 的值。您可以在 END 子程序中修改 $? 以變更程式結束狀態。例如

END {
    $? = 1 if $? == 255;  # die would make it 255
}

在 VMS 中,實用程式 use vmsish 'status' 會讓 $? 反映實際的 VMS 退出狀態,而不是預設的 POSIX 狀態模擬;請參閱 "$?" in perlvms 以取得詳細資訊。

助記符:類似於 shksh