Sub called too early to check prototype ?

Hallo,

ich habe ein CGI-Skript geschrieben, das eine Funktion enthält.
Diese Funktion wird auch ordnungsgemäß ausgeführt, doch Perl
liefert immer am Anfang (also vor den eigentlichen Ausgaben)
die folgende Fehlermeldung:

main::MakeHTMLHeader() called too early to check prototype at test.cgi line xy

Diese Meldung kommt je einmal für jede Zeile, in der diese
Funktion aufgerufen wird (im unteren Beispiel also dreimal),
und danach läuft alles ganz normal und ordentlich ab - jedenfalls
beim direkten Ausführen mit Perl unter DOS (Win98-Umgebung).

Problem: Der Browser verträgt die Fehlermeldung natürlich
nicht und steigt aus. Das Skript wird nicht ausgeführt.
Wie kann man diese Fehlermeldung verhindern?

Danke!
Kristian

Hier der grobe Aufbau des Skripts:

#!/usr/bin/perl -w
 
use strict;
 
my $Datei = "Test.txt";
my $Bytes;
my $Binaeres;
 
$Bytes = -s $Datei || die **MakeHTMLHeader** ("File Error") . "File $Datei not found!\n

Diese Funktion wird auch ordnungsgemäß ausgeführt, doch Perl
liefert immer am Anfang (also vor den eigentlichen Ausgaben)
die folgende Fehlermeldung:

main::MakeHTMLHeader() called too early to check prototype at
test.cgi line xy

Entferne die Klammern aus der Funktionsdeklaration
sub MakeHTMLHeader()
{
}
–>
sub MakeHTMLHeader
{
}

und dann geht’s.
Perl hält Deine Funktionsimplementierung für eine Forwarddeklaration (Function prototype)

Klaus

Achso, stimmt ja. Danke! Ich bin VBAler :wink: o.w.T.
o.w.T.