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
