Pregunta

¿Es posible agregar la etiqueta -w para la primera línea de un programa Perl, a continuación, ejecute el programa desde un shell como bash o DOS y escribir todas las advertencias en un archivo?

perl somescript.pl > somefile.txt

Esto es un retroceso a la mesa de comprobar programas COBOL en la escuela. Me gustaría tener todas las advertencias en frente de mí en un pedazo de papel para que pueda ir a través de mi programa y solucionarlos uno por uno. Si el comando anterior no funciona, hay una manera de programación para obtener todas las advertencias de una secuencia de comandos en un archivo? Gracias chicos!

¿Fue útil?

Solución

Prueba esto:

perl somescript.pl 2&> somefile.txt

Cuando se usa la redirección simple (>), sólo redirigir el flujo de salida estándar de programas, mientras que las advertencias se guardan a error flujo estándar de salida. Véase por ejemplo el Bash Reference Manual .

También hay un Vi :: Quickfix módulo en CPAN que puede salvar las advertencias en un archivo que se puede cargar en Vim e inspeccionar todas las advertencias sin tener que buscar los números de línea a mano. (Google para vim quickfix .) No he intentado yo mismo, sin embargo.

Otros consejos

Zoul manejado las cosas redirección, así que aquí está la respuesta increíblemente compleja sobre las advertencias.

Sólo tiene que llamar el programa de este modo: perl -w script.pl

Esto obliga a las advertencias que se activen todas partes en el guión y todos los módulos. Realmente es mejor usar el pragma advertencias en todos los módulos que escribe. Ver perldoc perllexwarn para obtener más información sobre este tema.

Otro truco que es agradable al depurar es usar de la carpa :: siempre . Si las fuerzas de un seguimiento de pila completa de todos los errores. Esto me parece muy, muy servicial. Basta con ejecutar la secuencia de comandos de esta manera:

perl -MCarp::Always somescript.pl

o conseguirlo en un archivo:

perl -MCarp::Always somescript.pl 2&> somefile.txt

Y, por último, voy a desviarse de su pregunta un poco más. Muchas personas como instrumento de su código mediante el uso de una biblioteca de registro como Log4perl . Herramientas como esta permiten habilitar el registro en un determinado nivel (normal o de depuración, por ejemplo) o en partes específicas de su aplicación en carreras individuales de su código. Este es el final (?) La evolución de la sentencia de impresión de depuración. Puede ser muy útil en la depuración de fallos, mientras que en el desarrollo, y en el campo una vez que han alcanzado la fase de mantenimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top