2012-06-20 18 views
9

Ich versuche, einige zu Debuggen von regulären Ausdrücken verwenden:Debugging Perl Regulärer Ausdruck

perl -Mre=debug file.pl 

Das file.pl Skript viele reguläre Ausdruck hat. Einige von ihnen wiederholen sich. Mit der obigen Syntax werden alle Regex in file.pl debuggt.

Gibt es eine Möglichkeit, Perl anzuweisen, nur eine bestimmte Regex in einem Skript zu debuggen?

Ich bin vertraut mit YAPE :: Regex-Modul, aber das ist nicht was ich brauche. Also bitte nicht vorschlagen, das zu benutzen.

+1

Warum nicht einfach die anderen Regexes Kommentar aus, oder einfach nur die besondere regex auf der Kommandozeile, über 'perl -e' laufen? –

+0

das Skript ist sehr kompiliert (12000 LOC). Wenn ich einen Regex auskommentiere, dann wird die Ausführung fehlschlagen. Auch wenn ich Dummy-Werte zur Verfügung stelle, wird es zu unerwarteten Ergebnissen führen :( – AnonGeek

Antwort

11

Wie bei vielen anderen Pragmas können Sie no verwenden, um vorherige use abzubrechen.

use re 'debug'; 

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

no re 'debug'; 

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

Ab 5.9.5 der ‚debug‘ wiederzuverwenden Richtlinie und ihre Äquivalente sind lexikalische, wie die anderen Richtlinien sind.

Verwendung:

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

Wird dies auch in 5.8.8 unterstützt? Ich stelle es unter eine Bedingung, aber es ist Aktivieren Sie es global für alle Regex – AnonGeek

+1

Nein, seit Version 5.9.5 In 5.8.8 müssen Sie 'no' Anweisung verwenden. –