我正在从配置文件中读取正则表达式,其中可能包含或不包含无效语法。(它被锁定在防火墙后面,所以我们不要讨论安全性。)我已经能够测试一些错误并给出友好的消息。
但在这方面却没有这样的运气:
Unrecognized escape \Q passed through in regex
我知道是什么原因导致的,我只是想知道是否可以在 Perl 5.8 中捕获它。到目前为止,它一直抵制我检查这种情况的努力。
所以问题是:有人知道如何捕捉这个吗?我必须重定向 STDERR 吗?
您可以将警告设为 FATAL 并使用块 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";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1349 次 |
最近记录: |