open produce un fork y la entrada 
o la salida del hijo queda conectado
al proceso padre a través del
manejador de ficheros que se acaba de abrir.
open.
|-  
la escritura del padre en el manejador se 
recibe en el hijo en STDIN.
Del mismo modo, si abrimos un pipe desde menos
-| la salida del hijo por STDOUT
se recibe en el manejador.
El siguiente ejemplo es una variante del que aparece en
perldoc perlipc:
lhp@nereida:~/Lperl/src/perl_networking/ch2$ cat -n pipe2minus
 1  #!/usr/bin/perl -w
 2  use strict;
 3
 4  my $pid = open(my $TO_KID, "|-");
 5  die "Can't fork\n" unless (defined $pid);
 6
 7  if ($pid) {  # parent
 8      print $TO_KID "2 x $_ = ".2*$_."\n" for 1..3;
 9      close($TO_KID) || warn "kid exited $?";
10  } else {     # child
11      while (<STDIN>) { # child's STDIN is parent's $TO_KID
12          print "Father says $_";
13      }
14      exit;  # don't forget this
15  }
Al ejecutar tenemos:
lhp@nereida:~/Lperl/src/perl_networking/ch2$ ./pipe2minus Father says 2 x 1 = 2 Father says 2 x 2 = 4 Father says 2 x 3 = 6
 
