2012-06-20 27 views
9

Estoy tratando de depurar algunas expresiones regulares usando:depuración de Perl expresiones regulares

perl -Mre=debug file.pl 

El guión file.pl tiene muchas expresiones regulares. Algunos de ellos se repiten. Usando la sintaxis anterior, todas las expresiones regulares en file.pl están siendo depuradas.

¿Hay alguna manera de decirle a Perl que depure solo una expresión regular determinada en un script?

Estoy familiarizado con el módulo YAPE :: Regex, pero eso no es lo que requiero. Entonces, por favor no sugieras usar eso.

+1

Por qué no basta con comentar las otras expresiones regulares, o ejecutar simplemente la expresión regular en particular en la línea de comandos, a través de 'perl -e'? –

+0

el script está muy compilado (12000 LOC). Si voy a comentar alguno de los regex entonces la ejecución fallará ... también si proporciono valores ficticios, entonces dará resultados inesperados :( – AnonGeek

Respuesta

11

Como con muchos otros pragmas, puede usar no para cancelar el anterior use.

use re 'debug'; 

$str=~/\d{3}/; 

no re 'debug'; 

$str=~/\d{3}/; 
6

A partir de las 5.9.5 Directiva utilizan re 'depuración' y sus equivalentes se alcance léxico, como los demás directivas.

Uso:

{ 
    use re 'debug'; 
    # Debugged regexp here. 
} 
+0

¿Esto también es compatible en 5.8.8? Lo estoy poniendo en una condición, pero es habilitándolo globalmente para todos los regex – AnonGeek

+1

No, desde la versión 5.9.5. En 5.8.8 necesita usar la instrucción 'no'. –

Cuestiones relacionadas