2013-07-16 21 views
7

Simgeleştirmeyi denetlemek için tek Perl regexp karakter sınıflarını kullanması gereken bir ayrıştırma ortamım (Marpa :: R2 :: Scanless) var. Var olan karakter sınıflarının herhangi birine uymuyor gibi görünen bir şey var. Yani, perlunicode docs etrafında kazma sonra, beklendiği gibi çalışmıyor dışında aşağıdaki kod ile geldim. Tüm alfasayısal olmayan (parens hariç) serilere ayrılmış bir dizi satır görmeyi bekliyorum. Bunun yerine, karakter sınıfını bulamadığım için bir çalışma zamanı hatası alıyorum.Perl 5.018'deki Özel Karakter Sınıfı

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

Herhangi bir ipucu, ipucu, püf noktası veya öneriniz var mı?

cevap

7

IsWow alt ürününü ve Magic::IsWow özelliğini belirtin. User-Defined Character Properties in perlunicode aktaran

: Kimlerin isimleri "mı" "In" veya başlamak tanımlayarak subroutinler yaparak kendi ikili karakter özelliklerini tanımlayabilir

.

+0

Teşekkürler. Heyecandaki çatlaklardan kaybolan küçük parçacıkların bu kadar şaşırtıcı olması şaşırtıcıdır. – PWBENNETT

İlgili konular