我正在研究一些处理可能格式错误的UTF8的Perl代码,并且遇到了与正则表达式匹配的奇怪现象。请考虑以下代码:
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
my $string = "One \x{FFFF_FFFF} three\n";
my $re1 = qr/\x{FFFF_FFFF}/;
my $re2 = qr/.*\x{FFFF_FFFF}/;
my $re3 = qr/.\x{FFFF_FFFF}/;
print "One\n" if $string =~ $re1;
print "Two\n" if $string =~ $re2;
print "Three\n" if $string =~ $re3;
输出结果为:
一个
三
为什么第二个正则表达式也不匹配?有解决办法吗?
我正在使用Perl 5.14.2。
答案 0 :(得分:2)
由于已经在5.18
中修复了一个错误$ usr/perlbrew/perls/5.16.3t/bin/perl -wE'
say "One \x{FFFF_FFFF} three\n" =~ /.*\x{FFFF_FFFF}/ ?1:0'
0
$ usr/perlbrew/perls/5.18.2t/bin/perl -wE'
say "One \x{FFFF_FFFF} three\n" =~ /.*\x{FFFF_FFFF}/ ?1:0'
1