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