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