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
