2009-06-21 22 views
6

¿Cómo puedo verificar que una variable tenga un valor específico en Perl? ¿Existe un comando para detener la ejecución de un script para buscar algunas de sus variables?¿Cómo puedo tener aserciones variables en Perl?

Me pregunto si puedo usar la práctica de insertar Pythonic:

assert 0, (foo, bar) 

depurar secuencias de comandos de una manera debuger-menos?

Respuesta

2

Hay un script en PerlMonks que introduce un método de declaración rápida.

La velocidad es importante, ya que se interpreta y Perl ninguna comprobación en línea influirá en el rendimiento (como las macros de C sencillas, por ejemplo)


No estoy seguro de si estas cosas van a ser directamente utilizable.


Ok! Esto es lo que estaba buscando - PDF Warning: Test-Tutorial.pdf. El Test::Harness se usa para escribir pruebas de módulos de Perl.

10

Una búsqueda rápida de CPAN sugiere Carp::Assert.

+1

+1 para escribir más caracteres más rápido que yo. Aunque voy a editar la URL para que sea independiente de la versión. –

+0

Iba a comentar tu respuesta sobre el acabado de la foto. En cuanto a la URL, constantemente me olvido de eso, así que gracias. – Telemachus

5

Smart::Comments son agradables.

+0

Smart :: Comentarios ++ Cuando se utiliza con el modificador -ENV, es una herramienta fantástica para este tipo de cosas. Mucho mejor que tener que quitar todas las pruebas antes de ir a producción, como sugirió alguien más. – RET

1
$var_to_check =~ /sometest/ or die "bad variable!"; 

que tienden a tirar cosas como esta en mi código, y luego utilizar una búsqueda y reemplazo para deshacerse de ellos (en el código de producción).

Además, 'eval' se puede utilizar para ejecutar una sección de código y capturar errores y se puede usar para crear una funcionalidad de manejo de excepciones. Si afirma que un valor no es 0, ¿quizás desea lanzar una excepción y manejar ese caso de una manera especial?

0
if ($next_sunrise_time > 24*60*60) { warn("assertion failed"); } # Assert that the sun must rise in the next 24 hours. 

Usted puede hacer esto si usted no tiene acceso a Perl 5.9 que se requiere para Carp::Assert.

Cuestiones relacionadas