2017-08-23 17 views
4

m//またはs///の式の評価中にトレースを正規表現エンジンの状態のにする便利な方法はありますか?ところで正規表現マッチングの実行をトレースする方法は?


は、私はCPANを通じて利用できるRegexp::Debugger packageがあることを承知している(と、それは驚くほどクールです)、私はそれからのトレースのようなものを取得する方法が表示されません。私は潜在的に膨大な数のステップを踏み越えたくありません。

+2

を[YAPE ::正規表現を:: Explain](http://search.cpan.org/perldoc?YAPE::Regex::Explain)は、正規表現のパターンを「説明する」(コメントを付けて注釈を付ける)モジュールです。 – ikegami

答えて

8

はい。デバッグモードに正規表現エンジンを回して、それがやっているものを印刷します:

の出力与え
use re 'debug'; 

my $str = "abcdefg"; 
$str =~ m/[ef]+/; 

:関心のモジュールがあり、関連のノートで

Compiling REx "[ef]+" 
Final program: 
    1: PLUS (13) 
    2: ANYOF[ef] (0) 
    13: END (0) 
stclass ANYOF[ef] plus minlen 1 
Matching REx "[ef]+" against "abcdefg" 
Matching stclass ANYOF[ef] against "abcdefg" (7 bytes) 
    4 <abcd> <efg>   | 1:PLUS(13) 
            ANYOF[ef] can match 2 times out of 2147483647... 
    6 <abcdef> <g>   | 13: END(0) 
Match successful! 
Freeing REx: "[ef]+" 
+3

スクリプトを編集したくない場合は、 'PERL5OPT = -Mre = debug script.pl'を使ってスクリプトを有効にすることができます – ikegami

関連する問題