7.ファイルの操作
ファイルのオープン、クローズやファイルへの入出力をします。
ファイルの基本的な操作としては「開く」→「読み書きする」→「閉じる」です。なんか、書類保管用の文具ファイルを扱うのに似ていますね。
1.ファイルのオープン
文字通り、これから操作しようとするファイルを開きます。
書式 : open (FILE_HANDLE, filename)
引数パラメータ 内 容 FILE_HANDLE ファイルハンドル名 (今どのファイルを処理しているかを管理するための名前) filename 実際のファイル名
※作成者が管理するファイルハンドルの他に次の特別なファイルハンドルが用意されています。(これUNIX操作やC言語でもあったなぁー)
ファイルハンドル 意 味 内 容 STDIN 標準入力 パイプ ( ※1 ) やリダイレクト ( ※2 ) 時にデータを取り込む。コマンドラインから入力時にはキーボード。 STDOUT 標準出力 パイプやリダイレクト時にデータを出力する。コマンドライン入力時にはモニター。 STDERR 標準エラー エラー時に出力される。
*1 : 標準出力(STDOUT)と標準入力(STDIN)を経由してデータを受け渡しする仕組みで、あるプログラムが標準出力(STDOUT)に出力した結果を、他のプログラムの標準入力(STDIN)に渡す仕組みをいいます。
*2 : 標準出力(STDOUT)をそのままのテキストファイルなどに書き出す方法をいいます。
●入出力モードの指定(これから操作しようとするファイルを開くモードを指定します)
filename にモードを記述します。(記号は何となく意味わかるような気がしますね)
記号 内容 例 < 入力モードでオープン open (FD, "<takaq.txt") > 出力モードでオープン open (FD, ">takaq.txt") >> 追加出力モードでオープン open (FD, ">>takaq.txt") +< 読み書き両用でオープン open (FD, "+<takaq.txt") +> ファイルの作成(読み書き両用) open (FD, "+>takaq.txt") +>> ファイルのオープンまたは作成(読み書き両用) open (FD, +>>takaq.txt")
2.ファイルの入出力
(1)ファイルの入力
◆ <>演算子 (ダイヤモンド演算子・・・・という)
書式 : <FILE_HANDLE>
ハンドル名を < > でくくります。
【例1】・・・・・・・・takaq.txt を入力モードで開き、ファイルの先頭行を $data に代入する。
open (FH, "takaq.txt") ;
$data = <FH>;
【例2】・・・・・・・・takaq.txt を入力モードで開き、ファイルの最後まで表示する。
open (FH, "takaq.txt") ;
while (<FH>) {
print ;
}
【例3】・・・・・・・・takaq.txt を入力モードで開き、配列変数 @DATA に一度に代入し表示する。
open (FH, "takaq.txt") ; # takaq.txt をオープン
@DATA = <FH> ; # 配列にファイルの全ての行を格納
close (FH) ; # ファイルを閉じる
foreach $data (@DATA) { # 配列 @DATAの内容を順次 $data に代入し表示する
print ;
}
(2)ファイルの出力
◆ print 関数
書式 : print FILE_HANDLE STRING
FILE_HANDLE で指定したファイルに文字列 STRING を書き出す。
【例1】・・・・・・・takaq.txtを上書きモードで開き、文字列を一行ずつ出力する。
open (FH, ">takaq.txt");
print FH 'ガンダム" ;
print FH 'ジム' ;
print FH 'ザク' ;
close (FH) ;
【例2】・・・・・・takaq.txtを上書きモードで開き、配列 @DATA を一度に出力する。(配列の内容は記述省略)
open (FH, ">takaq.txt") ;
print FH @DATA ;
close (FH) ;
【例3】・・・・・・takaq.txtを追加きモードで開き、ファイルの最後に1行追加出力する。
open (FH, ">>takaq.txt") ;
print FH 'ジオング' ;
close (FH) ;
他にもファイル操作は一杯ありますが、とりあえずこの辺で・・・・
【戻る】