以下代码:
#!/usr/bin/env perl
use utf8;
use strict;
use warnings;
use 5.012; # implicitly turn on feature unicode_strings
my $test = "some string";
$test =~ m/.+\x{2013}/x;
产量:
在 test.pl 第 9 行
$test
的模式匹配中使用未初始化的值。(m//)
这似乎发生在任何 2 字节字符中\x{}
。以下正则表达式工作正常:
/a+\x{2013}/
/.*\x{2013}/
/.+\x{20}/
此外,错误消失了,但不鼓励use bytes
使用该编译指示。这里发生了什么?