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
