Christian Zill: Konvertierung von Unicode-Notation in das Zeichen selbst

Beitrag lesen

Hallo,

Hier ist Christian, ich hab da was probiert, wirfst mal Blitzblick bitte? Also versprich Dir nicht zuviel davon:

ich habe hier ein Textfile, in dem alle Nicht-ASCII Zeichen in der HTML-Unicode Notation vorhanden sind: z.B: "Länder" = "Länder".

Ich hätte diesen Text mit gerne mit PERL bearbeitet, ohne für jedes einzelne Nicht-ASCII Zeichen eine Search/Replace RegEx anzuwenden.

Evtl.kannst du aber genau 1 REGEX-Maschine für den ganzen Textblock anwenden???

;-))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

$gesamter_txt =~ s/such_danach/ersetz_damit/gsm;

Im folgenden die "_"s wegdenken, nur der Überscht wg. seien sie gestattet:

such_danach   = &{1,1}#{1,1}_______(([0-9]){1,3}?)________;{1,1})

Leider ist ersetz_damit nicht $1, sondern eine Funktion von $1, shit.    ;-(((

$1 ist also jetzt das was in der Rundklammer steht.oO?
Also jetzt bzgl "Länder" z.B.:: $geparster Zahlenstring = $1; (Genau: 228! ;-)

Obiges /gsm, und das Ding ist superschnell komplett fertig. mit allen Zeilen.
Also ohne Schleife drumherum. Könnte noch was fehlen..., also das, was man macht, um eine Datei nicht zeilenweise, sondern als Riesenhaps zu fresen...,
egal, Kleinigkeit, evtl später...

trotzden, bevor ichs wieder vergess:
Packs zu Sicherheit aber, später, alles in eine while-Schleife: while!(unauffindbar){ doit}, so, aber jetzt wurscht.

Fertig? Nein ;-(.

Also dieses "228" noch mappen auf was? ascii? iso8859-1? Egal, auch später, zunächst folgendes:

Als Ersetz-Ausdruck ist $1 bisher ungenügend, es muß eine Funktion von $1 sein.
Also eine sub{}; Du kanst innerhalb regulärer Ausdrücke Funktionen aufrufen.
Definiere diese Funktion ca. so:

local *deine_map_Funktion=sub{
  kriegt später z.B. jenes "228" übergeben
  mach irgendwas mit "228"
  return diesen_neuen_Wert
} ; (Nicht zu vergessen das Semicolon hier! )

Du kannst damit dann: s/ genau_wie_oben / deine_map_Function( $1 )/gsm;

Aber was kommt in diesen Funktionsrumpf? Und gibts da nichts Einfachres im Ansatz? Also bevor ich weitermache, mal abschicken .oO, ok, weg! Lass' Ich mich mal belehren? HALLO?

Wirst Du noch schlau dadraus? Stöhn. Ich hab mich verrannt im Tunnel. Wo ist Licht? Es darf nicht wahrsein.
Irgendein neuer Super-Switch..., und bei den runden Klammern?...also: WEG, Bitteschön! Viellicht Müll, aber es ist gut gemeint jedenfalls. Um Gottes Willen...vieleicht das REGEX-COMMON-Modul, und Du brauchtest nur noch den Hinweis auf gsm...