pattern matching mit umlauten
Robert Allerstorfer
- perl
Hi,
bin auf ein problem mit folgendem perl code gestossen:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
$_ = "KLÄNGE Klänge";
$term = "e";
$n = @matches = /$term/ig;
print "$term kommt in "$_" $n mal vor";
Dieses kleine CGI-script gibt völlig richtig aus:
e kommt in "KLÄNGE Klänge" 2 mal vor
da das matching case-insensitiv erfolgt.
Nimmt man statt e allerdings den Umlaut ä, also $term = "ä", erfolgt die suche seltsamerweise nicht mehr case-insensitive, sodass nur das kleine ä, nicht aber das große Ä gefunden wird. =>
ä kommt in "KLÄNGE Klänge" 1 mal vor
Ist das ein Perl-fehler oder kennt jemand einen workaround?
danke,
rob.
Hi,
Nimmt man statt e allerdings den Umlaut ä, also $term = "ä",
erfolgt die suche seltsamerweise nicht mehr case-insensitive,
sodass nur das kleine ä, nicht aber das große Ä gefunden wird. =>
ä kommt in "KLÄNGE Klänge" 1 mal vorIst das ein Perl-fehler oder kennt jemand einen workaround?
klaro ,)
$term = lc $term;
einfach kleinmachen und dann durchsuchen ,)
mfg
CK1
Nimmt man statt e allerdings den Umlaut ä, also $term = "ä", erfolgt die suche seltsamerweise nicht mehr case-insensitive, sodass nur das kleine ä, nicht aber das große Ä gefunden wird. =>
ä kommt in "KLÄNGE Klänge" 1 mal vorIst das ein Perl-fehler oder kennt jemand einen workaround?
Nein, kein Fehler. Lies "perldoc perllocale"
Peter
Hi,
Nimmt man statt e allerdings den Umlaut ä, also $term = "ä", erfolgt die suche seltsamerweise nicht mehr case-insensitive, sodass nur das kleine ä, nicht aber das große Ä gefunden wird. =>
ä kommt in "KLÄNGE Klänge" 1 mal vorIst das ein Perl-fehler oder kennt jemand einen workaround?
Nein, kein Fehler. Lies "perldoc perllocale"
Gut, d.h. die lösung ist
use locale;
am anfang zu plazieren, dann funktionierts...
ciao,
rob.