pipe($child_reader, $child_writer); binmode($child_reader, ":encoding(UTF-8)"); binmode($child_writer, ":encoding(UTF-8)"); $child_reader->autoflush(1); $child_writer->autoflush(1); # fork child my $pid = fork; if (!defined($pid)) { warn "Failed to fork child process - turning off --fork_writer"; return; } if ($pid) { # parent close $child_reader or warn "Parent: failed to close pipe reader - $!"; return; } else { # child close $child_writer or warn "Child: failed to close pipe writer - $!"; child_writer(); exit; }