Siechfred: Prototype mismatch

Beitrag lesen

Tag Alexender.

ich habe noch im Internet (Google) irgendwo gelesen, dass man in diesem Fall use LWP::Simple; mit use CGI 'param'; ersetzen kann, doch dann gibt es einen anderen Fehler in einer folgenden Zeile: [...]

Der Ansatz ist schon der richtige. Dein Fehler lautete:

Prototype mismatch: sub main::head vs ($) at ../..//path/file.cgi line 22

Beide Module (CGI und LWP::Simple) stellen eine Methode head zur Verfügung, welche aus welchem Modul du brauchst, musst du wissen. Anhand deines letzten Fehlers vermute ich allerdings, dass du aus LWP::Simple nur die Methode get() brauchst, nicht aber head(), also binde auch nur die benötigte Methode ein:

use LWP::Simple qw/get/;

Ansonsten kannst du das Einbinden der nicht benötigten head-Methode auch so unterbinden (dann stehen dir alle Methoden von LWP::Simple zur Verfügung außer head):

use LWP::Simple qw/!head/;

Das Gleiche könnte man mit dem CGI-Modul machen. Wenn du ausschließlich die Methode param brauchst, um die Parameter zu parsen, mit denen dein Script aufgerufen wurde, dann schreibe es auch so:

use CGI qw/param/;

Du musst dann auch kein neues CGI-Objekt erzeugen, du kannst die Methode param direkt wie eine normale sub aufrufen, musst allerdings beachten, dass dann alle anderen Funktionalitäten des CGI-Moduls nicht verfügbar sein werden. Übrigens sollte man m.E. vom CGI-Modul immer nur das einbinden, was man tatsächlich braucht, Hinweise dazu findest du in der Dokumentation zu CGI.pm.

[dsf 3.6]
Siechfred

--
»Sie kochten heimlich mit Wasser und tranken öffentlich Wein.«