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: