Perl脚本停止。错误:找不到unicode属性定义ASCII

时间:2012-01-19 12:47:09

标签: regex perl character-properties

我继承了一些perl脚本。 (我不是perl程序员)。

我在下面的行中看到错误"can't find unicode property definition ascii"

$value =~ s/[^[:\p{ascii}]]//g 

此错误会导致程序执行停止吗?因为它是程序停止之前打印的最后一行。

同一条线在放弃之前已经运行了1000多次。问题是什么?

我倾向于 $ value 的值不是造成问题的原因。 我是对的吗?

在我看来,似乎{ascii}已从unicode定义中删除。可以这样做还是我完全咆哮错误的树?

1 个答案:

答案 0 :(得分:2)

在我看来ascii必须是大写的ASCII

$value =~ s/[^\p{ASCII}]//g 

使用\ p {ascii}进行测试:

#> cat test.pl
#!/usr/bin/perl
my $str = q/☺ùùabvcedhkè ég"/;
$str =~ s/[^\p{ascii}]//g;
print $str,"\n";

#> perl test.pl
Can't find Unicode property definition "ascii" at test.pl line 3.

使用\ p {ASCII}进行测试:

cat test.pl
#!/usr/bin/perl
my $str = q/☺ùùabvcedhkè ég"/;
$str =~ s/[^\p{ASCII}]//g;
print $str,"\n";

#> perl test.pl
abvcedhk g"