nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

cgi->upload() kein Filehandle ...

Von: Ervin Peters (ervn.peters@ervnet.de) [Profil]
Datum: 17.09.2007 20:31
Message-ID: <fcmh6s$kn0$03$1@news.t-online.com>
Newsgroup: de.comp.lang.perl.cgi
Teile eines perl cgi upload scriptes:

Ein Hash speichert die auszuführenden actions des Scriptes:

use strict;
use CGI
my $cgi = new CGI();

[..]

my $actions
{
[..],

upload => sub
{
my $ifile = $cgi->upload('newfile');
binmode $ifile;
[..]
},

[..]
}

[..]
$ret = $actions->{$action}();
[..]

Ich wunderte mich warum eine Datei angelegt wurde aber leer blieb.

Das binmode gab dann die Fehlermeldungen das $ifile kein gültiges handle
sei. in den Warnungen stand dann was das ein read auf ein nicht offenes
Filehandle nicht möglich sei.

???

Paralleltest des Uploads mit den einem modifizierten selfhtml-upload
script verwirt. Es funktioniert, die Datei wird erstellt und gefüllt,
binmode gibt keinen Fehler.

Der einzige verbleibende Unterschied war zum Schluß noch die Position des

my $ifile = $cgi->upload('newfile')

Ich zog es aus der Funktion raus in den Rumpf und siehe da, es
funktioniert:

my $cgi = new CGI();
my $ifile = $cgi->upload('newfile');

my $actions
{
[..],

upload => sub
{
binmode $ifile;
[..]
},

[..]
}


und siehe da, die Datei wurde an der gewünschten Stelle erzeugt und
gefüllt.

Kann mir das jemand erklären, warum sich die $cgi->upload('newfile')
Variable, genauer das Filehandle daran, abhängig vom Abfrageort anders
verhält?

ervin

[ Auf dieses Posting antworten ]

Antworten