in reply to First SELECT of FIFO still blocked ?

my $line = <$fh>;

This will block. You should not mix non-blocking and blocking I/O when trying to stay non-blocking.

select will only tell you if there is at least one byte readable on a handle. It doesn't tell you how many bytes are actually available on the handle wihtout blocking.