close FILEHANDLE
close

關閉與檔案處理相關的檔案或管線,清除 IO 緩衝區,並關閉系統檔案描述符。如果這些操作成功且沒有任何 PerlIO 層報告錯誤,則傳回 true。如果省略引數,則關閉目前選取的檔案處理。

如果您要立即對 FILEHANDLE 執行另一個 open,則不必關閉 FILEHANDLE,因為 open 會為您關閉它。(請參閱 open。)不過,對輸入檔案執行明確的 close 會重設行數計數器 ($.),而 open 執行的隱式關閉則不會。

如果檔案處理來自管線開啟,則如果涉及的其他系統呼叫之一失敗,或其程式以非零狀態結束,close 會傳回 false。如果唯一的問題是程式以非零狀態結束,$! 會設為 0。關閉管線也會等待在管線上執行的處理結束,以防您之後想要查看管線的輸出,並會將該命令的結束狀態值隱式放入 $?${^CHILD_ERROR_NATIVE} 中。

如果有多個執行緒在執行,則如果檔案處理在另一個執行緒中仍為開啟狀態,close 會對來自管線開啟的檔案處理傳回 true,而不會等待子處理結束。

在對另一端寫入處理的處理結束寫入之前關閉管線的讀取端,會導致寫入端收到 SIGPIPE。如果另一端無法處理,請務必在關閉管線之前讀取所有資料。

範例

open(OUTPUT, '|sort >foo')  # pipe to sort
    or die "Can't start sort: $!";
#...                        # print stuff to output
close OUTPUT                # wait for sort to finish
    or warn $! ? "Error closing sort pipe: $!"
               : "Exit status $? from sort";
open(INPUT, 'foo')          # get sort's results
    or die "Can't open 'foo' for input: $!";

FILEHANDLE 可能是一個其值可用作間接檔案代號的表達式,通常是實際檔案代號名稱或自動變數代號。