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(3). A ``whence'' of 1 (SEEK_CUR) is useful for not moving the file pointer:
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. Hopefully.
If that doesn't work (some stdios are particularly cantankerous), then you may need something more like this: