5部 関数リファレンス

seek

seek FILEHANDLE, OFFSET, WHENCE



seekを使えば、ファイルの任意のレコードにアクセスできます。この関数は、FILEHANDLEOFFSET位置にファイルポインタをセットします。成功すると 1、失敗すると 0 を返します。

FILEHANDLE
FILEHANDLE
は、ファイルハンドル名またはファイルハンドルオブジェクトへのリファレンスになるような式でもかまいません。
OFFSET
OFFSET はバイト単位で位置を指定します。
WHENCE
WHENCE によって、OFFSET がファイルのどこを基点とするかを指定します。WHENCE
の値が、0 ならば、ファイルポインタを OFFSET の位置へ、1 ならば、現在位置から OFFSET
離れた位置へ、2 ならば、EOF から OFFSET だけ離れた位置へ、ファイルポインタを設定します。

WHENCE

WHENCE 意味
0 ファイルの先頭
1 現在の位置
2 ファイルの末尾

seekの使い方

open (FH, $log);
# ファイルの末尾に移動
seek(FH, 2, 0); 

他のプロセスによって長さが増えるようなファイルに追随

for ( ;; ){
while ( <LOG> ){
...
}
sleep 15;
seek LOG, 0, 1;
}

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

関連記事