Could the problem be that you don't actually fork anywhere? Essentially, the child pid code if statement is never executed. In your parent code, you should first be reading from the shared fd-which you don't do- but it's probably not best to give the same handle to every child unless the data is small. I'd also suggest skipping all of this complicated file handler stuff and sticking to the half-duplex pipe. A Filehandle to a child won't accomplish much. ++ for variable name $childs! Hilarious! Ask me further if you need any clarification. Good luck!