next up previous contents
Next: Manejo de datos sucios Up: Reporte de advertencias (warnings) Previous: Usando warnings con Perl   Contents

Usando warnings léxicos con Perl >= 5.6.0

Con Perl 5.6 el comportamiento descrito sigue funcionando, pero un nuevo comportamiento mucho más flexible y poderoso ha sido introducido: El uso de los warnings como pragma. Sugiero referirse a la página de manual de warnings léxicos [5]. Cabe también recordarles que los pragmas aplican únicamente al archivo donde son declarados.

El activar el reporte de warnings como un pragma nos permite activar o desactivar las advertencias por categorías. En la página de manual se definen las categorías chmod, closure, exiting, glob, io (que se subdivide en closed, exec, newline, pipe y unopened), misc, numeric, once, overflow, pack, portable, recursion, redefine, regexp, severe (que se subdivide en debugging, inplace, internal y malloc), signal, substr, syntax (que se subdivide en ambiguous, bareword, deprecated, digit, parenthesis, precedence, printf, prototype, qw, reserved ysemicolon), taint, umask, uninitialized, unpack, untie, utf8, void y y2k. Cada una de estas categorías puede ser activada o desactivada individualmente. Por ejemplo, si queremos activar el reporte de advertencias acerca de símbolos utilizados una sóla vez y acerca de uso de manipuladores de archivos no abiertos, y queremos ignorar el reporte de advertencias de recursión y de uso de valores sin inicializar:

use warnings qw(once unopened);

no warnings qw(recursion uninitialized);
Adicionalmente, podemos elevar el nivel de estas categorías para convertirlas en errores fatales. Por ejemplo, si queremos que si redefinimos alguna función (esto es, definimos dos funciones con el mismo nombre) Perl lance un error fatal en vez de redefinirla, podemos utilizar:

use warnings FATAL => qw(redefine);
Si definimos un comportamiento de warnings por pragma, éste tendrá precedencia sobre el comportamiento de la variable $W o del switch -w. Sin embargo, si invocamos a Perl con el switch -W o con -X, éstos últimos tendrán precedencia.


next up previous contents
Next: Manejo de datos sucios Up: Reporte de advertencias (warnings) Previous: Usando warnings con Perl   Contents
Gunnar Wolf 2002-05-20