Use IO::Handle; pipe(THISREADHANDLE, THISWRITEHANDLE); THISWRITEHANDLE->autoflush(1); THISREADHANDLE->autoflush(1); if ($processed = fork) { close THISWRITEHANDLE; while (defined($text = )) { print $text; } close THISREADHANDLE; waitpid($processed, 0); } else { close THISREADHANDLE; print THISWRITEHANDLE "This is a text message"; exit; }