#!/usr/bin/perl use strict; use warnings; use POSIX ':fcntl_h'; use IPC::Run 'run'; my $fifo = "test_fifo"; unless ( -p $fifo ) { system("mkfifo", $fifo) == 0 or die "Unable to create FIFO: $!"; } # FIFOs need readers before writers. sysopen FIFO_OUT, $fifo, O_RDONLY | O_NONBLOCK or die "Unable to open FIFO for read: $!"; sysopen FIFO_IN, $fifo, O_WRONLY | O_NONBLOCK or die "Unable to open FIFO for write: $!"; run ( ["cat", "pipe.pl"], ">", \*FIFO_IN, "<", \*FIFO_OUT ); while () { chomp; print "Foo: ", $_, ": Bar.\n"; } close FIFO_IN or die "Problems closing FIFO writer: $!"; close FIFO_OUT or die "Problems closing FIFO reader: $!";