调试Perl正则表达式

12

我正在尝试使用以下内容调试几个正则表达式:

perl -Mre=debug file.pl

file.pl脚本有许多正则表达式,其中一些是重复的。使用上述语法,file.pl中的所有正则表达式都被调试。

有没有办法告诉Perl仅调试脚本中的特定正则表达式?

我熟悉YAPE::Regex模块,但那不是我需要的。所以请不要建议我使用它。


1
为什么不注释掉其他的正则表达式,或者通过 perl -e 在命令行上只运行特定的正则表达式呢? - Ehtesh Choudhury
这个脚本非常复杂(12000行代码)。如果我要注释掉任何一个正则表达式,那么执行就会失败...而且如果我提供虚拟值,那么它将给出意想不到的结果 :( - AnonGeek
2个回答

13

与许多其他编译指示一样,您可以使用no来取消先前的use

use re 'debug';

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

no re 'debug';

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

6
从5.9.5版本开始,使用use re 'debug'指令及其等效指令具有词法作用域,就像其他指令一样。
使用方法:
{
    use re 'debug';
    # Debugged regexp here.
}

这个在5.8.8版本中也支持吗?我正在将它放在一个条件下,但它会全局启用所有正则表达式。 - AnonGeek
1
不行,自5.9.5版本起就不支持了。在5.8.8中需要使用no语句。 - Denis Ibaev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接