2012-06-20 14 views
9

Próbuję debugować kilka wyrażeń regularnych przy użyciu:debugowania Perl Wyrażenie regularne

perl -Mre=debug file.pl 

Skrypt file.pl ma wiele wyrażeń regularnych. Niektóre z nich się powtarzają. Używając powyższej składni, debugowane jest całe wyrażenie w pliku file.pl.

Czy istnieje sposób, aby powiedzieć Perlowi, aby debugować tylko konkretne wyrażenie w skrypcie?

Jestem zaznajomiony z modułem YAPE :: Regex, ale to nie jest to, czego wymagam. Więc proszę, nie sugeruj tego.

+1

Dlaczego nie po prostu skomentuj inne regexes lub uruchomić tylko szczególną regex w linii poleceń, poprzez 'perl -e'? –

+0

Skrypt jest bardzo skompilowany (12000 LOC). Jeśli skomentuję którekolwiek z wyrażeń regularnych, wykonanie nie powiedzie się. Również jeśli podam fałszywe wartości, to da to nieoczekiwane wyniki :( – AnonGeek

Odpowiedz

11

Podobnie jak w przypadku wielu innych pragm, możesz użyć no, aby anulować poprzednią use.

use re 'debug'; 

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

no re 'debug'; 

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

Od 5.9.5 dyrektywy posługują ły „debug” i ich ekwiwalenty leksykalnie zawężona, a pozostałe dyrektyw.

Zastosowanie:

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

Czy jest to również obsługiwane w 5.8.8? Umieszczam to pod warunkiem, ale jest włączanie go globalnie dla wszystkich regex – AnonGeek

+1

Nie, od wersji 5.9.5 W 5.8.8 musisz użyć instrukcji "no". –