[Cologne-pm] Brauche mal ne schnelle Hilfe zu Umlauten
Michael Lamertz
mike at lamertz.net
Tue Feb 3 05:27:11 CST 2004
On Tue, Feb 03, 2004 at 11:43:54AM +0100, Bernd Bornhausen wrote:
> Hallo zusammen,
>
> die Frage die ich stelle ist ja schon fast peinlich, aber irgendwie will
> mein Hirn keine rechte Antwort darauf finden:
Jaja, die Sache mit dem Hirn... Das passiert mir auch andauernd. Sind
aber auch kleine Mistdinger, die Hirne... ;-)
> ich muss mehreren Dateien ü,ä,ö,ß gegen ue,ae,oe,ss austauschen,also
> wird mal schnell jede Datei an ein Perl script übergeben ausgelesen, und
> dann zeilenweise geschaut, ob dort die Umlaute drin sind, wenn ja
> schnell austauschen die Zeile schreiben und fertig, wenn kein Umlaut in
> der Zeile, dann einfach nur die Zeile schreiben.
> Alles kein Problem, bis auf das mit den Umlauten *g*.
> Irgendwie will das System keine ü??s oder so als erlaubte Zeichenfolge
> anerkennen.
> Hat jemand ne Idee ???
Yepp:
our %map = (
'ä' => 'ae', 'Ä' => 'Ae',
'ö' => 'oe', 'Ö' => 'Oe',
'ü' => 'ue', 'Ü' => 'Ue',
'ß' => 'ss',
);
# Das hier geht leider nicht in einem Schritt, da qr ein Quote-Operator
# ist, und darin zwar Variablen, aber leider kein Code interpoliert
# wird:
our $umlauts = '[' . join('', keys %uml) . ']';
$umlauts = qr($umlauts);
while (<>) {
s/($umlauts)/$map{$1}/ge;
print;
}
Btw: Version 0.1 sah so aus:
s/(.)/$map{$1} || $1/ge
Benchmark.pm ist unser Freund:
---------- snip ----------
tweety:~$ ./umlauts
Rate anychar targeted
anychar 65.2/s -- -91%
targeted 741/s 1036% --
tweety:~$
---------- snip ----------
Whoa! Faktor 10. Da werde ich mich doch nicht ueber eine Variable mehr
aufregen :)
Mike
--
Well, then let's give that Java-Wussie a beating... (me)
Michael Lamertz | +49 2234 204947 / +49 171 6900 310
Sandstr. 122 | mike at lamertz.net
50226 Frechen | http://www.lamertz.net
Germany | http://www.perl-ronin.de
More information about the Cologne-pm
mailing list