El modificador de línea de comandos -w
activa las advertencias globalmente para todo el intérprete. Por otro lado, use warnings
es un "pragma léxico" y solo se aplica en el ámbito léxico en el que se usa. Usualmente, pones eso en la parte superior de un archivo para que se aplique a todo el archivo, pero también puedes extenderlo a bloques particulares. Además, puede usar no warnings
para desactivarlos temporalmente dentro de un bloque, en los casos en que necesite hacer un comportamiento de generación de advertencia. No puede hacer eso si tiene activado -w
.
Para obtener más información acerca de cómo funcionan las advertencias léxicas, incluido cómo activar y desactivar varios subconjuntos de ellas, consulte el documento perllexwarn.
Su punto de "no hay advertencias" es lo que esperaba, pero una prueba rápida (perl -w -e "no warnings; print $ a;") mostró que, al menos en mi perl, "no warnings" todavía funciona incluso con -w. –