2012-01-19 19 views
2

私はいくつかのperlスクリプトを継承しました。 (私はPerlのプログラマーではない)。Perlスクリプトが停止します。エラー:ユニコードプロパティ定義が見つかりません。

私は、このエラーはプログラムの実行を停止させるような下の行

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

にエラー"can't find unicode property definition ascii"を見ていますか?それはプログラムが停止する前に最後に印刷された行です。

これまでに、同じ行が1,000回以上実行されていました。何が問題なの?

私はそれに向かって傾いています$値の値は問題の原因ではありません。 私はそうですか?

ユニコード定義から{ascii}が削除されたようです。これは、を行うことができますか、間違ったツリーを完全に吠えていますか?

+0

しばらくの間実行してもコードが失敗することは説明できませんが、正規表現は非常に奇妙なようです。 '['と ':'はそれ自体ASCII Unicode文字であるため、それらをまったく言及するのは余分なものであり、正規表現が間違っている可能性があります。間違っていると思われますか?正確であれば、パターンが一致するはずのことを知っていますか? – Borodin

+0

はい、エラーが明示的にキャッチされない限り、 – Borodin

+0

[従来のPOSIX文字クラス '[[:ascii:]]'](http://p3rl.org/recharclass#POSIX-Character-Classes)から '\ p'に変換されたように見えます/ '\ P'私にPerlの表記 – daxim

答えて

2

asciiに\ P {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. 

テスト

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

No. 'perldoc perluniprops':"これらの構文を解析する際、Perlは{中括弧}内のどこでも大文字小文字の違いを無視します。 " – Borodin

+1

@Bodod:本当に試しましたか?私の編集を参照してください。 – Toto

+0

はい私はして、あなたのケースの両方が私のシステム(Perl v5.12.3)で正常に動作します。あなたは、しかし、OPの問題の原因を発見したかもしれません。 – Borodin

関連する問題