Thread The Perl Jam 2
(24 answers)
Opened by Raubtier at 2015-12-17 14:04
CGI.pm speichert intern alle Werte zu einem Parameter in einem HoA. Ist nun der erste Wert zu einem Parameter "ARGV" und der zweite Wert eine Datei (beides als POST-Parameter), so gibt $cgi->upload('<Parameter>') "true" (nicht leere Liste von Filehandles) zurück, ( if($cgi->upload('<Parameter>')){ ... } ) weil ein Wert halt eine Datei ist, aber $cgi->param('<Parameter>') gibt "ARGV" zurück. Nun wäre das nicht so wild wenn nicht <ARGV> und $x='ARGV'; <$x> für Perl das gleiche wäre. Es wird nun alles geöffnet was in @ARGV als Datei erkannt wird. Und üblicherweise steht in bei einem CGI-Script in @ARGV die GET-Parameter. Wenn nun in @ARV noch "<programm> |" steht wird das entsprechende Programm gestartet.
ABER Das ganze Problem löst sich in Wohlgefallen auf wenn man CGI.pm wie vorgesehen benutzt, indem man nur das als Filehandle benutzt was von $cgi->upload('<Parameter>') zurück gegeben wird. So ist es in CGI.pm dokumentiert und empfohlen. Also so hat man keine Probleme. |