![]() |
![]() |
TOP > Perl > ファイルハンドル |
![]() |
![]() |
ファイルハンドルをオープンする
ファイルハンドルをオープンするには、openを使う。
(書式) open ファイルハンドル名, ファイル名;
ファイルハンドルをオープンする例
open H_READ, "aaa.txt"; #読み込みモードで開く open H_READ, "< bbb.txt"; #読み込みモードで開く $fname = "ccc.txt"; open H_READ, "$fname"; #読み込みモードで開く open H_READ, "< $fname"; #読み込みモードで開く open H_WRITE, "> ddd.txt"; #新規書き込みモードで開く open H_WRITE, ">> eee.txt"; #追加書き込みモードで開く open H_WRITE, "> $fname"; #新規書き込みモードで開く ファイルハンドルをクローズする
使用したファイルハンドルをクローズする
(書式) close ファイルハンドル名;
ファイルハンドルをオープンする時の処理
ファイルハンドルが無効であった際に、適切に処理を行う必要がある。
die関数を使って処理をする。die関数は、指定したメッセージを標準エラーストリームに表示していから0以外の終了ステータスでプログラムを終了させる。
ファイルオープン時の処理の例
open H_READ, "< bbb.txt" or die "can not open bbb.txt error $!"; #$!には、システムからのメッセージ #また、dieと同じような処理を行うwarnもある。 #warnはdieと同じように警告を出すが、強制終了はしない。 open H_READ, "< bbb.txt" or warn "can not open bbb.txt error $!"; #$!には、システムからのメッセージ ファイルハンドルを使う
正常にファイルハンドルを取得したら、ファイルハンドルを行入力演算子でくくり、処理を行う。
ファイルハンドルを使う例
open H_READ, "< aaa.txt"; while ( 出力操作をバッファリングする前にフラッシュする
デフォルトでは、各ファイルハンドルに対する出力はバッファリングされる。もし、出力操作をする度に、フラッシュさせたければ、特殊変数「$|」に1を入れる
出力操作をバッファリングする前にフラッシュする例
open H_WRITE, "> ccc.log" or die "create error ccc.log $!"; select H_WRITE; #明示的に出力先の指定 $| = 1; #H_WRITEに対してバッファリングせずにフラッシュさせる select STDOUT; #元に戻す print H_WRITE "hahahahaha\n"; #バッファリングせずに、書き込みが行われる close(H_WRITE); ファイルテスト
以下のファイルテストを使って、ファイル状態を調べる事ができる
|
![]() |
![]() |
Copyright 2007 ためになるホームページ All Rights Reserved. |