我正在从配置文件中读取正则表达式,其中可能包含也可能不包含无效语法。 (它被锁定在防火墙后面,所以我们不要进入安全。)我已经能够测试一些错误并给出友好的消息。
这一次就没有这样的运气了:
Unrecognized escape \Q passed through in regex
我知道是什么原因造成的,我只是想知道我是否可以在 Perl 5.8 中捕获它。到目前为止,它阻止了我检查这种情况的努力。
所以问题是:有人知道如何捕获它吗?我必须重定向 STDERR 吗?
最佳答案
您可以将警告设为 FATAL 并使用 block eval:
#!/usr/bin/perl
use strict;
use warnings;
my $s = '\M';
my $r = eval {
use warnings FATAL => qw( regexp );
qr/$s/;
};
$r or die "Runtime regexp compilation produced:\n$@\n";
关于regex - 编译正则表达式时可以捕获 "Unrecognized escape"警告吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/889850/