in reply to blocking, non-blocking, and semi-blocking
Select is more about direct inter-process communication (like sockets and pipes), not inderect interprocess communication (by writing and reading from files).
I know you don't want to use it, but what you really seem to be talking about is the same sort of thing that File::FindTail does, which is to poll a file for changes in length every so often. To work that into what you're doing, just do your IO::Select call with a brief timeout (like 1 second or so), and check to see if the file has changed it's length in the interim. If so, seek to it's previous length, and read from there.
Update: added to the last paragraph a little so that it doesn't just say what is wrong but also says what you should do.
------------ :Wq Not an editor command: Wq
|
|---|