2012-06-05 4 views
8

Es scheint, dass es nicht den Akzent Ó als GroßRegex für Groß Unicode stimmt nicht überein „Ó“?

#!/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"; 

kehrt

SIM 

Perl sollte Unicode-Daten der Lage sein, nicht erkennt, zu verwenden, die bereits Ó als Groß Tags. Von 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

Ich sehe nicht, wie Sie als einen _more_ Minimalfall bekommen können, was :-) – paxdiablo

+1

Ah zur Verfügung gestellt hat, meine Entschuldigung, @pst. Ich habe nur wirklich auf Zeile _count_ anstatt Inhalt geachtet. Du hast Recht, dass das RE selbst wahrscheinlich vereinfacht werden könnte. – paxdiablo

Antwort

10

Du use open ':std', ':locale'; fehlt die Ausgabe richtig zu kodieren.

Wenn das nicht funktioniert, wird die Datei verschlüsselt ist nicht UTF-8 verwenden, obwohl Sie Perl sagen es ist.

+1

Das funktioniert! Ich nicht verstehen, da ich mein Beispiel nur eine Zeichenfolge verwendet und keine Datei ... ich etwas denke borked, wenn ich das tun 'Genau $ 1 ' – user525602

+1

drucken. ': Std' verursacht Strings auf stdout und STDERR gesendet decodiert werden codiert und Bytes von STDIN werden. – ikegami

Verwandte Themen