See the current Perl documentation for pipe.
Here is our local, out-dated (pre-5.6) version:
pipe - open a pair of connected filehandles
Opens a pair of connected pipes like the corresponding system call. Note
that if you set up a loop of piped processes, deadlock can occur unless you
are very careful. In addition, note that Perl's pipes use stdio buffering,
so you may need to set
$| to flush your
WRITEHANDLE after each command, depending on the
See Open2, Open3, and Bidirectional Communication for examples of such things.