hi!
my %ersetzungen = {'ae'=>'ä', 'oe'=>'ö', 'ue'=>'ü', 'ss'=>'ß'};
$string =~ s/([aou]ess)/$ersetzungen{$1}/g;
Hm, das sieht lustig aus. An sowas hab ich auch noch nie gedacht ;))
Schade, dass "a" und "ä" nicht ganz so weit auseinander sind, wie "o/ö" und "u/ü". Deshalb funktioniert
folgender Ausdruck nur mit "oe", "ue", "Oe" und "Ue" (keine Garantie, dass das überall und auf jeder
Plattform läuft):
$text =~ s/([ouOU])e/chr(ord($1)+135)/eg;
Naja, man kann das natürlich etwas erweitern, damit es auch mit "ae" und "Ae" funktioniert:
$text =~ s([aAoOuU])echr(ord($1)+135-4+(int(ord(lc$1)/(ord((ord(lc$1)>ord("U"))?"a":"A")+1))*4))eg;
Leider fällt mir für die Umwandlung von "ss" in "ß" keine Möglichkeit mehr ein, das zu erweitern. Aber inkl.
Vergrößerung des ersten Buchstabens, kann man das ganze - ohne Garantie - so zusammenfassen:
use locale;
$text =~ s([aAoOuU])eucfirst chr(ord($1)+135-4+(int(ord(lc$1)/(ord((ord(lc$1)>ord("U"))?"a":"A")+1))*4))eg;
bye, Frank!
ps: Bitte diesen Beitrag nicht allzu ernst nehmen :)