Hallo alle!
Ich hab ein script in Perl mit dem ich online Dateien (HTML, TXT, PM, PL, CGI, PHP, CONF, etc) bearbeite (um die Seiten nicht immer runterladen, editieren und wieder raufladen zu müssen. (Bitte erzählt mir jetzt nicht irgentwas von "editieren sollte man nicht direkt auf dem Live-System etc. - Danke!)
Also, mein script lädt also eine Datei und stellt sie ($pg) dann über HTML in einer textarea dar:
&Add("<textarea onChange='hasChanged = 1;' name='data' id='edit-textarea' wrap='off'>$pg</textarea>");
Problem ist klar: Ich muß bestimmte Zeichen vorher escapen, mindestens darf die Zeichenfolge "</textarea>" nicht im Ausgabestring ($pg) vorkommen. Also:
$pg=~s/</</g;
$pg=~s/>/>/g;
Ich möchte aber auch Perl-Scripts editieren können, auch das Script des Editors selbst! Würde ich es so ausgeben, dann würde ja < in ein "<"-Zeichen umgewandelt werden. Also muß cih auch Hashes escapen:
$pg=~s/&/&/g;
$pg=~s/</</g;
$pg=~s/>/>/g;
Nach dem submitted der textarea müssen die escapten Werte wieder zurückgewandelt werden
$in{'data'} =~ s/</</g;
$in{'data'} =~ s/>/>/g;
$in{'data'} =~ s/&/&/g;
Bevor der String in die zuvor "gebackupte" Datei geschrieben wird.
Frage: Hab ich beim escapen der Werte noch irgentwas übersehen? Ich möchte jede mögliche (Text-)datei in die textarea laden können, ohne das sich nach dem submit irgentein Buchstabe oder Sonderzeichen ändern würde.
Danke für Tipps!
csx