我有一个解析环境(Marpa::R2::Scanless),它需要使用单个 Perl 正则表达式字符类来控制标记化。我有一些东西要标记,似乎不适合任何现有的字符类。因此,在研究 perlunicode 文档之后,我提出了以下代码,但它没有按预期工作。我希望看到一排点穿插着所有非字母数字(括号除外)。相反,我收到一个关于无法找到字符类的运行时错误。
#!/usr/bin/env perl
use 5.018;
use utf8;
local $| = 1;
for my $i (map { chr($_) } 32 .. 127) {
if ($i =~ /\p{Magic::Wow}/) {
print $i;
}
else {
print ".";
}
}
package Magic;
sub Wow {
return <<'MAGIC';
+utf8::Assigned
-utf8::Letter
-utf8::Number
-0028
-0029
MAGIC
}
1;
任何提示、提示、技巧或建议?