This message is one of several periodic postings to DevShed's Perl forum intended to make it easier for Perl programmers to find answers to common questions. The core of this message represents an excerpt from the documentation provided with every Standard Distribution of Perl.

How can I open a pipe both to and from a command?

The IPC::Open2 module (part of the standard perl distribution) is an
easy-to-use approach that internally uses pipe(), fork(), and exec() to do
the job. Make sure you read the deadlock warnings in its documentation,
though (see the IPC::Open2 manpage). See the section on "Bidirectional
Communication with Another Process" in the perlipc manpage and the section
on "Bidirectional Communication with Yourself" in the perlipc manpage

You may also use the IPC::Open3 module (part of the standard perl
distribution), but be warned that it has a different order of arguments
from IPC::Open2 (see the IPC::Open3 manpage).

Documents such as this have been called "Answers to Frequently Asked Questions" or FAQ for short. They serve to reduce the volume of redundant traffic on this bulletin board by providing quality answers to questions that keep comming up. If you find errors or other problems with these postings please send corrections or comments to the posting email address.

Written by Anonym0us, inspired by the original PerlFAQ Server.