Cuando se procesan datos codificados en UTF-8 el punto casa
con un carácter UTF-8. La macro \C
puede ser
utilizada para casar un byte:
pl@nereida:~/Lperltesting$ cat -n dot_utf8.pl 1 #!/usr/local/lib/perl/5.10.1/bin/perl5.10.1 -w -COE 2 use v5.10; 3 use strict; 4 use utf8; 5 6 my $x = 'αβγδεφ'; 7 my @w = $x =~ /(.)/g; 8 say "@w"; 9 10 my @v = map { ord } $x =~ /(\C)/g; 11 say "@v"; pl@nereida:~/Lperltesting$ ./dot_utf8.pl α β γ δ ε φ 206 177 206 178 206 179 206 180 206 181 207 134
El mismo efecto de \C
puede lograrse mediante el
pragma use bytes
el cual cambia la semántica de caracteres
a bytes:
lhp@nereida:~/Lperl/src/testing$ cat -n dot_utf8_2.pl 1 #!/usr/local/bin/perl -w 2 use strict; 3 use utf8; 4 use charnames qw{greek}; 5 6 binmode(STDOUT, ':utf8'); 7 8 my $x = 'αβγδεφ'; 9 10 my @w = $x =~ /(.)/g; 11 print "@w\n"; 12 13 { 14 use bytes; 15 my @v = map { ord } $x =~ /(.)/g; 16 print "@v\n"; 17 }
Casiano Rodríguez León