Frank: Datei Upload

Hallo !
Ich habe mir gerade aus der Forumsauslese das Script zum Datei-Upload mit Hilfe von Perl kopiert, welches auch funktioniert.
Allerdings habe ich noch ein bis zwei Verständnisfragen.
Hier erstmal das Script:
#!/usr/bin/perl

binmode STDIN;
read STDIN, $Daten, $ENV{'CONTENT_LENGTH'};
@Teile = split /-----------------------------.{9}/, $Daten;
@Datei = split /\n/, $Teile[1], 5;
while ($Datei[1] =~ /\/) { $Datei[1] =~ s/^.*\//; }
$Datei[1] =~ s/"//;
chop $Datei[1];
chop $Datei[4]; chop $Datei[4];

open DATEI, ">$Datei[1]";
binmode DATEI;
print DATEI $Datei[4];
close DATEI;

print "Content-type: text/html\n\nUpload vollständig!";

Wenn ich also das Formular starte und eine Datei browse, z.B eine doc-Datei und den Datenstrom, der übergeben wird mir anzeigen lasse, sieht das so aus:

-----------------------------294882128732558 Content-Disposition: form-data; name="Datei";
filename="M:\DATA\Schmalacker\Sampler7.doc" Content-Type: application/msword
ÐÏࡱáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

Frage 1: Woher kommen die Striche am Anfang und was sagt die Nummernfolge aus ?
Danke
Frank

  1. Hier erstmal das Script:
    @Teile = split /-----------------------------.{9}/, $Daten;

    Das hier ist die Stelle, auf die sich Deine Fragen beziehen.

    Frage 1: Woher kommen die Striche am Anfang und was sagt die Nummernfolge aus ?

    Die Kombination aus den Strichen und der "magic number" (die von dem Perl-Skript ganz lasch als "9 beliebige Zeichen" geparst wird - das ginge auch besser, der exakte Wert wird zusätzlich über eine Environmentvariable übergeben) ist das Trennzeichen zwischen zwei Abschnitten eines CGI-Multipart-Pakets.

    Beim Datei-Upload muß ja ein Paket mit ganz verschiedenen Informationen übertragen werden, u. a. der Inhalt der Datei, aber auch der Dateiname und ggf. noch ein paar andere Dinge.
    Um zwischen diesen Teilen zu trennen, wird die genannte Trennzeichenkette zwischen die Teile gesetzt. (Frag mich nicht, was passiert, wenn die im Datei-Inhalt selbst auch vorkommen sollte ...). Das Upload-Skript trennt jedenfalls an solchen Stellen per "split" das Multipart-Paket auf, und danach kann es die einzelnen Teile als Elemente eines Arrays ansprechen und separat bearbeiten.