Macros como \d han sido generalizadas.
Los digitos Devanagari tienen códigos
del 2406 (0x966) al 2415 (0x96F):
lhp@nereida:~/Lperl/src/testing$ unicode -x 966..96f | egrep '096|\.0'
.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
096. ॠ ॡ । ॥ ० १ २ ३ ४ ५ ६ ७ ८ ९
El siguiente ejemplo muestra que expresiones regulares como \d+
reconocen los digitos Devanagari:
lhp@nereida:~/Lperl/src/testing$ cat -n regexputf8.pl
1 #!/usr/local/bin/perl -w
2 use strict;
3 binmode(STDOUT, "utf8");
4 use utf8;
5
6 # Digitos Devanagari del 0 al 9
7 my @dd = map { chr } (2406..2415);
8 my $x = join '+', @dd;
9 print "La interpolación ocurre: $x\n";
10 my @number = $x =~ m{(\d+)}g;
11 print "Las expresiones regulares funcionan: @number\n";
12 print "Sin embargo la conversión numérica no es automática: ".($number[0]+$number[1])."\n";
Como se indica en el programa la conversión automática de dígitos en otros juegos de caracteres no funciona. Véase la ejecución:
lhp@nereida:~/Lperl/src/testing$ regexputf8.pl
La interpolación ocurre: ०+१+२+३+४+५+६+७+८+९
Las expresiones regulares funcionan: ० १ २ ३ ४ ५ ६ ७ ८ ९
Argument "\x{967}" isn't numeric in addition (+) at ./regexputf8.pl line 12.
Argument "\x{966}" isn't numeric in addition (+) at ./regexputf8.pl line 12.
Sin embargo la conversión numérica no es automática: 0
Lo mismo ocurre con la macro\w:
lhp@nereida:~/Lperl/src/testing$ cat -n words_utf8.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 $x = 'áéíóúñ€αβγδη';
8 my @w = $x =~ /(\w)/g;
9 print "@w\n";
lhp@nereida:~/Lperl/src/testing$ words_utf8.pl
á é í ó ú ñ α β γ δ η
Casiano Rodríguez León
