Ich versuche gerade die ersten Perlskripte zu verstehen bzw. selbst zu schreiben und komme auch eigentlich ganz klar damit. Nur diese eine Zeile bereitet mir dann doch etwas Kopfzerbrechen. Eventuell könnte mir die jemand von euch mal _genau_ erklären? Wäre echt nett:
Also es handelt sich dabei um ein sendmail Skript. Das ist übringens der Teil der den eingetroffenen String zerlegt. Obige Zeile soll, soweit ich das weiss, diese %23-Zeichen und so entfernen. Nur wie macht das diese Zeile hier nun genau? Damit ihr eventuell den Zusammenhang besser versteht tippe ich mal den Teil des Skriptes der den Datenstring auseinander nimmt. Das sieht dann so aus:
Ich versuche gerade die ersten
Perlskripte zu verstehen bzw. selbst zu
schreiben und komme auch eigentlich ganz
klar damit. Nur diese eine Zeile bereitet
mir dann doch etwas Kopfzerbrechen.
Eventuell könnte mir die jemand von euch
mal _genau_ erklären? Wäre echt nett:
Das ganze ist ein regulärer Ausdruck, der Zeichenketten von der Form %xx, wobei x eine hexadezimale Ziffer ist (d.h. von 0-F) in hier korrespondierendes Zeichen (character) umwandelt. Z.B. wird %20 in ein Blank umgewandelt. Da dies für die ganze Zeichenkette in $value gemacht werden soll ist am Ende des regülären Ausdrucks ein „eg“.
Das Ding sucht nach so Dingern wie %20, indem es sucht nach % und Ziffern bzw. a-f dahinter.
Es sucht also nach hexadezimalen Zeichen.
(Zahlensystem mit Basis 16)
z.b. 20 = 2 * 16 ^ 1 + 0 * 16 ^ 0 = 32
was dem Ascii Wert eines Leerzeichens entspricht…
die Funktion pack macht wohl genau jenes und rechnet nen Hex-Wert in eine Dezimalzahl um.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]