2013-07-16 4 views
7

私は、トークン化を制御するために単一のPerl正規表現文字クラスを使用する必要がある解析環境(Marpa :: R2 :: Scanless)を持っています。私は、既存の文字クラスのいずれにも合わないようなトークン化するものを持っています。だから、perlunicodeのドキュメントを掘り下げた後、期待通りに動作しないという点を除いて、次のコードを思いついた。私は、すべての非英数字(括弧を除く)が散在しているドットの列を見たいと考えています。代わりに、文字クラスを見つけることができないというランタイムエラーが発生します。Perlのカスタム文字クラス5.018

#!/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; 

ヒント、ヒント、トリック、または提案はありますか?

答えて

7

サブIsWowとプロパティMagic::IsWowと名前を付けます。

User-Defined Character Properties in perlunicodeを引用:

をあなたが名前が「中」または「ある」で始まるサブルーチンを定義することで、独自のバイナリ文字プロパティを定義することができます。

+0

ありがとうございました。それは興奮の亀裂を滑り落ちる可能性があるようなスニペットがいかに少ないか驚くべきことです。 – PWBENNETT

関連する問題