write_ten.pl de las secciones 
1.6 
y
1.6
en el cuál se producía
la terminación de write_ten.pl debido
a que el proceso al otro lado sólo lee las tres primeras
(read_three.pl).
Stein en [1] propone dos soluciones. 
La primera, que se muestra a continuación consiste 
en poner un manipulador para la señal  PIPE  (línea 8).
lhp@nereida:~/Lperl/src/perl_networking/ch2$ cat -n write_ten_ph.pl
 1  #!/usr/bin/perl
 2  use strict;
 3  use IO::File;
 4
 5  my $ok = 1;
 6  local $SIG{PIPE} = sub { undef $ok };
 7
 8  my $PIPE = IO::File->new("| read_three.pl") or die "Can't open pipe: $!";
 9  $PIPE->autoflush(1);
10
11  my $count = 0;
12  for (1..10) {
13    warn "Writing line $_\n";
14    print $PIPE "This is line number $_\n" and $count++;
15    last unless $ok;
16    sleep 1;
17  }
18  close $PIPE or die "Can't close pipe: $!";
19
20  print "Wrote $count lines of text\n";
El manejador pone a falso el valor de $ok el cual 
es usado en el bucle (línea 14) para detectar el cierre
prematuro de la comunicación.
Al ejecutar obtenemos la siguiente conducta:
lhp@nereida:~/Lperl/src/perl_networking/ch2$ ./write_ten_ph.pl Writing line 1 Read_three got: This is line number 1 Writing line 2 Read_three got: This is line number 2 Writing line 3 Read_three got: This is line number 3 Writing line 4 Wrote 3 lines of text
Casiano Rodríguez León
