Im Moment kämpfe ich mit dem selben Problem wie in
http://www.perlmonks.org/?node_id=948131 beschrieben.
Irgend etwas verhaut mir beim Upload von Dateien mit dem Firefox und Opera den Dateinamen, sodass die
Data::Dumper Ausgabe des Namens so aussieht:
bless( \*{'Fh::fh00001meinedatei.jpg'}, 'Fh' )
Ich hole den Dateinamen so:
(my $dateiname = $cgi->param('upload')) =~ s/^.*[\\\/]//g;
Mit dem Internet Explorer funktioniert das alles fehlerfrei.
Seltsamerweise zeigt mir eine Ausgabe von
length() sowohl für
param('upload') als auch für
$dateiname den selben korrekten Wert an. Es sind genau die 14 Zeichen von
meinedatei.jpg. Warum zeigt der Dumper trotzdem etwas anderes an? Ich verstehe nicht, was da genau vor sich geht.
Gemerkt habe ich das auch nur zufällig, weil der Dateianme Teil eines Arrays ist, was ich später noch mit
JSON ausgeben will. Und
JSON hat sich beschwert:
encountered object 'meinedatei.jpg', but neither allow_blessed nor convert_blessed settings are enabled at /meinscript.pl line x
Die übrige Weiterverarbeitung der Variable klappt ansonsten wunderbar.
Aber so ganz habe ich die dortigen Lösungen nicht verstanden. Ist das tatsächlich noch immer ein Bug in
CGI? Ich setze Version 3.63 ein und dort ist die Rede von 3.49. Das ist auch knapp zwei Jahre her.
Wie würdet ihr das aktuell lösen?
10 print "Hallo"
20 goto 10