Thread Regex Vergleich und "use locale" (4 answers)
Opened by Raphael at 2015-11-26 14:45

Gast Raphael
 2015-11-26 14:45
#183060 #183060
Hallo,
ich arbeite an einem kleinen Projekt, bei dem es wichtig ist, Umlaute über reguläre Ausdrücke zu erkennen. Prinzipiell ist das ja kein Problem, aber ich möchte zusätzlich in dem Programm "use locale;" verwenden, da ich mit Funktionen wie sort Umlaute korrekt sortieren möchte. Schaut euch mal folgendes Minimalbeispiel an:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
use utf8;
use locale;
my $s="ü";

#Bei diesem Vergleich scheint "use locale" etwas kaputt zu machen.
if ($s =~ /\w/){
print "match\n";
}
else{
print "kein match\n";
}

Dieses Programm liefert bei mir die Ausgabe "kein match". Ohne "use locale" funktioniert der match dagegen wie gewünscht. Ein Aufruf von locale in der Konsole liefert:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>locale
LANG=de_DE.UTF-8
LANGUAGE=de_DE
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

Weiß jemand:
1. warum mit "use locale" den Vergleich nicht funktioniert und
2. wie ich den Vergleich trotz "use locale" zum Laufen bringe?

Viele Grüße
Last edited: 2015-11-26 15:56:13 +0100 (CET)

View full thread Regex Vergleich und "use locale"