in reply to line by line reading named pipes

print provides list context and <> in list context reads the complete data, i.e. until EOF, before doing anything else. Use

while (<FIFO>) { print }