ファイルの読み出し、書き込み、ファイルポインタ操作

行入力演算子<>

行入力演算子<>はファイルハンドルで指定されたファイルから行単位で読み込みます。スカラーの場合には次の行(スカラー)、配列の場合には残りのすべての行(配列)を返します。

スカラーの場合

$test = < ファイルハンドル >; # 次の行をスカラーに読み込み

配列の場合

@test = < ファイルハンドル >; # 残りの全ての行を配列に読み込み

例 ファイルから一行読み込み

open(TEST,"<testfile");

$test=<TEST>; # ファイルハンドルTESTから次の行を読み込み、スカラー変数$testに代入します。

close(TEST);

print $test;

ファイルへの書き込み(print)

print文を用いてファイルへの書き込みができます。

print ファイルハンドル "文字列";

ファイルハンドルを省略した場合には、標準出力(通常は画面)に出力が行われます。

例 ファイルに一行書き込み

open(TEST,">testfile");

print TEST "Hello, World!\n";  # ファイルハンドルTESTに文字列「Hello, World!\n」を書き込みます。

close(TEST);

ファイルポインタの操作(seek)

ファイル中の読み出し、書き込みをする位置を表すものをファイルポインタと呼びます。ファイルから読み出し、書き込みを行う際には、ファイルポインタの位置から読み出し・書き込みが行われ、読み出し、書き込みが行われた後には、ファイルポインタの位置が更新されます。また、ファイルをオープンしたときには、ファイルポインタはファイルの最初に位置しています。ファイルポインタの位置を操作する命令がseek文です。seek文は以下の形をしています。

seek (ファイルハンドル、オフセット、起点);

起点は、0=ファイルの先頭、1=現在のファイルポインタ位置、2=ファイルの末尾を指定します。オフセットは起点からのバイト数(文字数と考えても良い)をスカラーで与えます。

seek (TEST, 0, 0); # ファイルハンドルTESTの最初にファイルポインタを移動
seek (TEST, 0, 2); # ファイルハンドルTESTの末尾にファイルポインタを移動