Use IO::Handle; pipe(READHANDLE, WRITEHANDLE); WRITEHANDLE->autoflush(1); READHANDLE->autoflush(1); if ($processed = fork) { close(READHANDLE); print WRITEHANDLE "Here is some text"; close(WRITEHANDLE); waitpid($processed, 0); } else { close(WRITEHANDLE); while (defined($text = )) { print $text; }; exit; }