fseek
call of stdio.
FILEHANDLE may be an expression whose value gives the name of the filehandle. The values for
WHENCE are 0 to set the file pointer to
POSITION, 1 to set the it to current plus
POSITION, and 2 to set it to
EOF plus offset. You may use the values
SEEK_SET,
SEEK_CUR, and
SEEK_END for this from
POSIX module. Returns 1 upon success, 0 otherwise.
On some systems you have to do a seek whenever you switch between reading and writing. Amongst other things, this may have the effect of calling stdio's clearerr.
A ``whence'' of 1
(SEEK_CUR) is useful for not moving the file pointer:
seek(TEST,0,1);
This is also useful for applications emulating tail -f
. Once you hit
EOF on your read, and then sleep for a while, you
might have to stick in a seek
to reset things. First the
simple trick listed above to clear the filepointer. The seek
doesn't change the current position, but it
does clear the end-of-file condition on the handle, so that the next
<FILE>
makes Perl try again to read something. We hope.
If that doesn't work (some stdios are particularly cantankerous), then you may need something more like this:
for (;;) { for ($curpos = tell(FILE); $_ = <FILE>; $curpos = tell(FILE)) { # search for some stuff and put it into files } sleep($for_a_while); seek(FILE, $curpos, 0); }