hallo Forum,
ich habe ein etwas größeres Script, das insgesamt auch ganz prima funktioniert. Aus Gründen der Übersichtlichkeit wollte ich es nun gerne "zerhacken" und ein paar Teile in Module (*.pm) auslagern. Angefangen habe ich damit, die Liste der (globalen) Variablen, die ich drin habe, in so ein Modul zu packen, das rufe ich dann im Hauptscript mit "use" wieder auf. Das geht anstandslos.
Jetzt wollte ich das mit ein paar Subroutinen auch machen, und da klappt es nicht. Ich habe beispielsweise eine Subroutine, die so aussieht:
sub input {
if ($cgi->param('antwort')) {
$origdatum = $cgi->param('origdatum');
$origname = $cgi->param('origname');
$origemail = $cgi->param('origemail');
$origurl = $cgi->param('origurl');
$origthema = $cgi->param('origthema');
} else {
...
Es geht da noch 150 Zeilen weiter. Solange die Subroutine im Hauptscript steht, tut das brav alles, was ich verlange. Lade ich sie aber mit "use" oder "require" als Modul dazu, bekomme ich plötzlich einen 500er Errror und im log die Meldung "Can't call method "param" on an undefined value at Input.pm line 10" (das ist die oben angegebene "if"-Bedingung). Außerdem mag das Script danach eine vorhandene Datei nicht mehr öffnen und auslesen, das log sagt dazu dann "Use of uninitialized value in concatenation (.) or string ..." und "readline() on closed filehandle".
Da verstehe ich irgendwas nicht. Prinzipiell sollte es doch egal sein, ob eine Subroutine nun im "Hauptscript" steht oder aus einem Modul eingelesen wird, Hauptsache ist, daß es sie bei Bedarf gibt. Da ich exakt dieselben Fehlermeldungen bekomme, wenn ich "use" und wenn ich "require" nehme, kann ich mir das auch nicht mit unterschiedlichen Namensräumen erklären. Hat jemand eine Idee oder einen Hinweis, wie ich das mit einem Modul, das eine Subroutine enthält, nun exakt zu machen habe oder wo eventuell ein Denkfehler stecken könnte? Mit meinem Modul "Variablen.pm" gibts keine Probleme, und mit Anweisungen außerhalb von Subroutinen auch nicht
Grüße aus Berlin
Christoph S.
mailto:christoph.schnauss@berlin.de
http://www.christoph-schnauss.de
ss:| zu:) ls:& fo:) va:) sh:| rl:|