stefank86: Kann einfaches Modul nicht verwenden

Ich habe ein Problem mit einem selbstgeschriebenen, sehr einfachen Modul namens Teams.pm, das folgendermaßen aussieht:

package Teams;
sub teams
{
 return ("test");
}
1;

Aufgerufen wird es in folgendem Script:

#!/usr/bin/perl -w
use lib('D:/Pfad/cgi-bin');
use Teams;
print header();
my $mannschaften = Teams::teams();
print $mannschaften;

Die Fehlermeldung, die beim Ausführen des Scripts erscheint lautet wie folgt:

Undefined subroutine &ModPerl::ROOT::ModPerl::Registry::D_3a_Websites_ESCHolzkirchende_cgi_2dbin_test_2epl::header called at D:/Pfad/cgi-bin/test.pl line 12.

Ein anderes selbstinstalliertes Modul, das nicht ich geschrieben habe, funktioniert einwandfrei.

  1. use Mosche;

    print header();

    Die Fehlermeldung, die beim Ausführen des Scripts erscheint lautet wie folgt:

    Undefined subroutine &ModPerl::ROOT::ModPerl::Registry::D_3a_Websites_ESCHolzkirchende_cgi_2dbin_test_2epl::header called at D:/Pfad/cgi-bin/test.pl line 12.

    header() ist ein Name einer Funktion des CGI.pm Moduls, welches du allerdings nicht einbindest. Auch sonst definierst du nirgendwo eine header-Subroutine.

    use Tschoe qw(Matti);

    --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
    1. header() ist ein Name einer Funktion des CGI.pm Moduls, welches du allerdings nicht einbindest. Auch sonst definierst du nirgendwo eine header-Subroutine.

      use Tschoe qw(Matti);

      Wenn ich 'print header();' weglasse funktioniert es, wenn ich 'print "Content-type: text/html\n\n";' einfüge. Wenn ich allerdins CGI einbinde mit 'use CGI;' und 'print header();' stehenlasse bekomme ich wieder eine Fehlermeldung. Normalerweise sollte das doch funktionieren, oder?!

      Ansonsten danke für die Hilfe. Eigentlich hätte ich selbst draufkommen sollen *schäm*.

      1. use CGI qw(:standard);
        print header();

        oder besser:

        use CGI;
        $cgi = CGI->new();
        print $cgi->header();

        1. Danke für die Antworten.

          Inzwischen habe ich ein neues Problem zum gleichen Thema.
          Perl findet Subroutinen in meinen Modulen nicht, obwohl sie zweifelsfrei existieren. Andere Subroutinen hingegen, die seit ein paar Minuten nicht mehr existieren, weil sie z.B. umbenannt wurden. Können aufgerufen werden. Es passiert auch, dass Werte geladen werden, die inzwischen abgeändert wurden.

          Das sieht zwar alles danach aus, als habe ich das Modul nach der Änderung schlicht und einfach nicht abgespeichert, was ich aber ausschließen kann.

          1. Hi,

            Das sieht zwar alles danach aus, als habe ich das Modul nach der Änderung schlicht und einfach nicht abgespeichert, was ich aber ausschließen kann.

            Wenn ich mich nicht irre, setzt du mod_perl mit dem Apachen ein. Durch mod_perl werden die Scripte, in einer schnelleren Version, gespeichert. Du musst den Apache neu starten, damit diese neu geladen werden, wenn du etwas in _Modulen_ geändert hast. Für weitere Informationen schau dir die Seite von mod_perl an: http://perl.apache.org/

            Grüße Andres Freund

            --
            ss:) zu:) ls:} fo:) de:] va:) ch:| n4:& rl:° br:^ js:( ie:% fl:( mo:|