El estandar Unicode declara que cadenas particulares de caracteres
pueden tener propiedades particulares y que una expresión regular puede
casar sobre esas propiedades utilizando la notación \p{...}
:
lhp@nereida:~/Lperl/src/testing$ cat -n properties.pl 1 #!/usr/local/bin/perl -w 2 use strict; 3 use utf8; 4 use charnames qw{greek}; 5 binmode(STDOUT, ':utf8'); 6 7 my @a = ('$', 'az', '£', 'α', '€', '¥'); 8 my $x = "@a\n"; 9 10 print /\p{CurrencySymbol}/? "$_ = Dinero!!\n" : "$_ : No hay dinero\n" for @a; 11 print /\p{Greek}/? "$_ = Griego\n" : "$_ : No es griego\n" for @a;Al ejecutar este script obtenemos:
lhp@nereida:~/Lperl/src/testing$ properties.pl $ = Dinero!! az : No hay dinero £ = Dinero!! α : No hay dinero € = Dinero!! ¥ = Dinero!! $ : No es griego az : No es griego £ : No es griego α = Griego € : No es griego ¥ : No es griego
El módulo Unicode::Properties permite obtener las propiedades de un carácter:
casiano@millo:~$ echo $PERL5LIB /soft/perl5lib/perl5_10_1/lib/:/soft/perl5lib/perl5_10_1/lib/perl5:/soft/perl5lib/perl5_10_1/share/perl/5.8.8/ casiano@millo:~$ perl5.10.1 -COE -Mutf8 -dE 0 main::(-e:1): 0 DB<1> use Unicode::Properties 'uniprops' DB<2> x uniprops ('☺'); # Unicode smiley face 0 'Alphabetic' 1 'Any' 2 'Assigned' 3 'IDContinue' 4 'IDStart' 5 'InLatin1Supplement' 6 'Latin' 7 'Lowercase'
Casiano Rodríguez León