2012-06-05 18 views
8

Parece que no reconoce el Ó acentuados en mayúsculasRegex para mayúsculas Unicode no coincide con "Ó"?

#!/usr/bin/env perl 
use strict; 
use warnings; 
use 5.14.0; 
use utf8; 
use feature 'unicode_strings'; 

" SIMÓN " =~ /^\s+(\p{Upper}+)/u; 
print "$1\n"; 

vuelve

SIM 

Perl debe ser capaz de utilizar los datos Unicode, que ya Etiquetas Ó en mayúsculas. De emacs describe-char

character code properties: customize what to show 
    name: LATIN CAPITAL LETTER O WITH ACUTE 
    old-name: LATIN CAPITAL LETTER O ACUTE 
    general-category: Lu (Letter, Uppercase) 
    decomposition: (79 769) ('O' '́') 
+0

No veo cómo podría obtener una _more_ caso mínimo que el proporcionado :-) – paxdiablo

+1

Ah, disculpas, @pst. Solo estaba mirando la línea _count_ en lugar de contenido. Tiene razón en que la RE en sí podría simplificarse. – paxdiablo

Respuesta

10

que se está perdiendo use open ':std', ':locale'; para codificar correctamente su salida.

Si eso no funciona, su archivo no está codificado usando UTF-8 aunque le dice a Perl que sí.

+1

¡Eso funcionó! No entiendo en absoluto, ya que mi ejemplo solo usa una cadena y no un archivo ... Supongo que algo se borra cuando hago 'print $ 1' – user525602

+1

Exactamente. ': std' hace que las cadenas enviadas a STDOUT y STDERR se codifiquen y que los bytes de STDIN se descodifiquen. – ikegami

Cuestiones relacionadas