2011-06-18 21 views
13

Con Perl casi siempre utilizan:¿Hay algún problema con "usar diagnósticos"?

use strict; 
use diagnostics; 

sugerí "Diagnóstico de uso" en lugar de use warnings;here y he recibido algunos comentarios negativos. Entonces, ahora estoy pensando:

¿Hay algún problema con use diagnostics;?

+0

Estaba a punto de hacer la misma pregunta. :) +1 –

Respuesta

17

diagnostics no es un pragma léxico como warnings. En su lugar establece la variable global $^W (como el uso del indicador -w), que habilita las advertencias para todo el código, lo quiera o no, y lo haya escrito o no. Eso es algo grosero. diagnostics también es tonto de usar en producción. Yo recomendaría usar warnings y luego conectar sus advertencias al splain si necesita una explicación.

9

use diagnostics ralentizará la ejecución de su código más de use warnings. Está bien activarlo si recibe una advertencia que no comprende durante el desarrollo, pero lo mejor es apagarlo cuando haya terminado.

+0

+1 Mejor aún, escribir código que no emita advertencias y/o diagnósticos para empezar. ;-) –

8

El pragma de diagnóstico es una herramienta de desarrollo que no necesita a menudo. Utilizarlo en una función de las necesidades:

$ perl -Mdiagnostics myprog

Habilitación del pragma con la línea de comandos -M switch significa que usted no tiene que acordarse de volver y quitar una prueba de sólo use diagnostics línea desde el código.

0

Si aún no se ha actualizado a la versión 5.12 de Perl, diagnostica tiene un error que enmascara una advertencia específica. El error se ha corregido en 5.12 (ver perl512delta):

diagnóstico ya no suprime Uso de valor no inicializado en el rango (o FLIP) advertencias. [perl # 71204]

Una vez que me di cuenta del error, volví y comenté use diagnostics; de todo mi código. Si recibo mensajes de advertencia, lo descompongo temporalmente, pero siempre vuelvo y lo comento nuevamente.

Cuestiones relacionadas