close FILEHANDLE
引数で指定したファイルやパイプをクローズします。パイプのクローズでは、パイプ上で実行されているプロセスの完了を待ちます。引数が省略された場合、現在選択されているファイルハンドルをクローズします。
クローズしてすぐにまた、同じファイルハンドルに対してオープンを行なう場合には、open
が自動的にclose
を行ないますので、close
を使わなくても問題ありません。ただし、明示的にclose
を使ったときにのみ入力ファイルの行番号 (特殊変数$.
) のリセットが行なわれます。
プロセスについては用語集「プロセス」を参照してください。
close
の使い方
ファイルハンドルがパイプつきオープンなら、close
はシステムコールが失敗したり、プログラムが非ゼロのステータスで終了した場合にも偽を返します (プログラムが非ゼロで終了しただけの場合は、$!
が 0 にセットされます)。パイプのクローズでは、パイプ上で実行されているプロセスの完了を待ちます。また自動的にコマンドのステータス値を$?
に設定します。
# sort へのパイプ open(OUTPUT, '|sort >foo'); ... # sort の完了後にクローズ close(OUTPUT);