Para controlar los mensajes de warning basta con instalar
un manejador de warnings en $SIG{__WARN__}. Todos los mensajes
serán redirigidos al manejador y es responsabilidad de este
mostrarlos. Así pues, el uso de un manejador
$SIG{__WARN__} nos permite silenciar
selectivamente warnings. En el siguiente
ejemplo el manejador concatena los warnings en una
variable siempre que un cierto flag este activo. La cadena
puede ser mostrada posteriormente:
$ cat -n warnings.pl
1 #!/usr/bin/perl -w
2 use strict;
3
4 my $ErrStr = "";
5 my $warnflag = 1;
6
7 sub warnhandler {
8 $ErrStr .= $_[0] if $warnflag
9 }
10
11 local $SIG{'__WARN__'} = \&warnhandler;
12
13 warn "Cuidado: Mira detrás de ti!\n";
14 $warnflag = 0;
15 warn "Alguien está vigilando!\n";
16
17 print "La cadena ErrStr contiene:\n$ErrStr\n";
Al ejecutarlo se obtiene la siguiente salida:
$ ./warnings.pl La cadena ErrStr contiene: Cuidado: Mira detrás de ti!
Casiano Rodríguez León
