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);
}