预编译正则表达式
我们可以抛开匹配或替换操作符,直接用qr//定义模式,然后使用这个已经编译过的正则表达式。
my $regex = qr/Buster(.*)Mini/si; foreach (@big_long_list) { $count += /$regex/; }
我们还可以使用某条正则表达式之前,先用qr//测试一下,看能否通过编译,而不必等到应用时才发现模式本身的问题。
可借助eval检测正则表达式编译结果:
my $name = '(' ; my $regex = eval {} or die "Regex failed: $@";