有没有一种方便的方法来在评估m //或s ///表达式时获取正则表达式引擎的状态?
顺便说一句,我知道通过CPAN可以获得Regexp::Debugger package(而且非常酷),但是我没有办法从它那里得到任何类似的痕迹;我不想逐步完成大量的步骤.
解决方法
是.将正则表达式引擎转为调试模式,它将打印它正在做的事情:
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]+"