Hi,
Kann mir jemand dieses PerlScript
erklären?
ja. Es geht einfacher, sicherer und sauberer mit
use CGI;
my $cgi = new CGI;
my %in;
foreach ($cgi->param) { $in{$_} = $cgi->param($_); }

So, jetzt von Anfang an und ausführlich:
if ($ENV{‚REQUEST_METHOD‘} eq „GET“) {
$buffer = $ENV{‚QUERY_STRING‘}; }
else { read(STDIN, $buffer,
$ENV{‚CONTENT_LENGTH‘}); }
Je nach Übertragungs-Methode wird die Variable $buffer mit den Daten gefüllt.
@nvpairs = split(/&/,$buffer);
Die einzelnen Parameter trennen.
foreach $pair (@nvpairs) {
Jeden Parameter einzeln durchgehen.
($name, $value) = split(/=/, $pair);
Name und Wert des Parameters trennen.
$value =~ tr/+/ /;
Plusse durch Leerzeichen ersetzen. (tr/// ist zeichenweise Ersetzung, und - trotz des „=~“ - keine Regular Expression)
$value =~
s/%([a-fA-F0-9][a-fA-F0-9])/pack(„C“,
hex($1))/eg;
Sodele, hier haben wir 'ne RegExp. Sie funktioniert folgendermaßen:
- Suche ein Prozentzeichen, gefolgt von zwei Hexadezimalziffern.
- Merke Dir die beiden Ziffern.
- Ersetze sie durch das, was die pack-Funktion liefert, wenn man den Dezimalwert der beiden Ziffern als ASCII-Code für ein Zeichen nimmt.
pack selber ist ziemlich komplex, lies Dir dazu am besten die Perl-Dokumentation (perldoc -f pack) durch. RegExp selber wird in perldoc perlre erklärt.
$in{$name} = $value; }
Das Hash mit den Daten füllen.
ich hab gerafft, dass am Ende in dem Hash
„in“ die einzelnene übergebenen Daten
enthalten sind, aber die Zeilen, die ein
=~ enthalten raff ich nicht (ich weiss
zwar, was der Operator bedeutet), komme
aber mit der Syntax nicht klar und kriege
nicht raus, was die einzelnen Befehle
bedeuten.
Ist auch nicht leicht zu verstehen. s/// heißt „suchen und ersetzen“, das „g“ am Ende steht für „global“ (also jedes Vorkommen ersetzen), das „e“ besagt, das der Code, durch den das Vorkommen ersetzt werden soll, ausgeführt wird (ansonsten würde durch die Zeichenkette „pack(…“ selbst ersetzt werden). Eben dieses „e“ macht die RegExp vermutlich auch so schwierig, daß Du sie nicht mehr gleich verstehst 
Ich hoffe, Du siehst jetzt klarer!
Cheatah
http://cheatah.net