5部 関数リファレンス

close

close FILEHANDLE



引数で指定したファイルやパイプをクローズします。パイプのクローズでは、パイプ上で実行されているプロセスの完了を待ちます。引数が省略された場合、現在選択されているファイルハンドルをクローズします。

クローズしてすぐにまた、同じファイルハンドルに対してオープンを行なう場合には、openが自動的にcloseを行ないますので、closeを使わなくても問題ありません。ただし、明示的にcloseを使ったときにのみ入力ファイルの行番号 (特殊変数$.) のリセットが行なわれます。

プロセスについては用語集「プロセス」を参照してください。

closeの使い方

ファイルハンドルがパイプつきオープンなら、closeはシステムコールが失敗したり、プログラムが非ゼロのステータスで終了した場合にも偽を返します (プログラムが非ゼロで終了しただけの場合は、$!が 0 にセットされます)。パイプのクローズでは、パイプ上で実行されているプロセスの完了を待ちます。また自動的にコマンドのステータス値を$?に設定します。

# sort へのパイプ
open(OUTPUT, '|sort >foo');
...
# sort の完了後にクローズ
close(OUTPUT);

関連記事