in reply to how to smoke from a fifo pipe

You open and read from the fifo just like any other file. If you are writing to a fifo, you probably want to use autoflush:

use IO::Handle; open (FIFO, ">>fifo") || die; FIFO->autoflush(1);

This presumes a named pipe "fifo" already exists in the same directory.