Si se asigna la cadena ' IGNORE ' a la correspondiente entrada $SIG{KINDOFSIGNAL}
Perl descartará la señal. Algunas señales no pueden ser ignoradas (por ejemplo,
 KILL  y  STOP ). Cuando cambie el manejador de una señal recuerde
usar local para asegurar
que el anterior manejador será restaurado una vez terminado el ámbito.
pp2@nereida:~/src/perl/perl_networking/ch2$ cat -n write_ten_i.pl
 1  #!/usr/bin/perl -w
 2  use strict;
 3
 4  local $SIG{PIPE} = 'IGNORE';
 5
 6  open (PIPE,"| ./read_three.pl") or die "Can't open pipe: $!";
 7  select PIPE; $|=1; select STDOUT;
 8
 9  my $count=0;
10  for (1..10) {
11    warn "Writing line $_\n";
12    unless (print PIPE "This is line number $_\n") {
13      warn "An error occurred during writing: $!\n";
14      $count = $_-1;
15      last;
16    }
17    sleep 1;
18  }
19  close PIPE or die "Can't close pipe: $!";
20
21  print "Wrote $count lines of text\n";
En la línea 12 se hace uso de la propiedad de print
de devolver 1 si la impresión se realizó con éxito.
Al ejecutar obtenemos:
lhp@nereida:~/Lperl/src/perl_networking/ch2$ ./write_ten_i.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 An error occurred during writing: Tubería rota Wrote 3 lines of textNótese como el mensaje de la línea 13 produce el volcado de la variable
$! en español.
Nótese también que no se produce error en el close PIPE.
Para mas información sobre las señales 
véase perldoc perlipc.
Casiano Rodríguez León
