dolflyer: keien blasse ahnung wo der fehler liegt

hi leute!

ich hab hier ein perlskript, zu beabrieten und bin absoluter perl newbie.
das teil sieht wie folgt aus (nur anfang, den nweiter als bis zum new() kommt er laug log eh nicht):
#!/usr/bin/perl
use strict;
use CGI::Switch;
use DBI;
use lib "$ENV{DBROOT}/lib/perl";
my $q = CGI::Switch->new();
my $username = $q->param('username') || 'USERNAME';
my $password = $q->param('password') || 'PASSWORT';
my $serverdb = $q->param('serverdb') || 'DATENBANKNAME';
my $driver = 'Adabas';

Ich bekomm folgende error-meldung:
skript.pl: Can't locate object method "new" via package "CGI::Switch" (perhaps you forgot to load "CGI::Switch"?) at /PFAD/skript.pl line 8.

kann mir jemand helfen?
thx,
dolflyer

  1. Hallo dolflyer,

    ich weiß nicht, ob es das Modul CGI::Switch gibt, aber ich weiß, das es das Modul CGI gibt!

    Also ersetze überall wo CGI::Switch steht durch 'CGI' und schaue mal was passiert.

    Gruß
    Helmut Weber

    1. hi helmut!

      hmm, ich hab dieses skript derzeit im einsatz, und es funktioniert halt leider auch....
      auf miene malten webserver (suse 6.4. dementsprechend alte libraries)
      auf dem neuen funzt es nimma (alles aktuelle)
      ich hab das ersetzen mal probiert...
      ich krieg dann ne leere seite, aber keine fehlermeldung mehr....
      hmm, ich werd mal versuchen, ob ich das CGI::Switch-Dingens irgendwie nachinstallieren kann...

      danke für deine anregung!

      1. Hallo dolflyer,

        Die Dokumentation zu dem CGI-Modul findest Du unter http://search.cpan.org/author/JHI/perl-5.8.0/lib/CGI.pm.

        Schreib mal nach deinem Code-Schnippsel folgende Zeilen:

        print $q->header;
        print $username;
        exit;

        Jetzt solltest Du nach dem Aufruf des Skriptes im Browser 'USERNAME' stehen haben.

        Ich hoffe dieser kleiner Denkanstoss hilft Dir weiter.

        Gruß
        Helmut Weber

  2. hi,

    Ich bekomm folgende error-meldung:
    skript.pl: Can't locate object method "new" via package "CGI::Switch" (perhaps you forgot to load "CGI::Switch"?) at /PFAD/skript.pl line 8.

    auf CPAN fand ich dazu: *Do not use this module. It is deprecated. *

    2 Möglichkeiten:

    • das Modul besorgen, ggf. da wo Script her ist
    • das Script umschreiben

    Rolf

    1. hi rolf!

      auf CPAN fand ich dazu: *Do not use this module. It is deprecated. *

      hmm, ich kann mir gut vorstellen, dass des ding schon so alt is, dass es nimma verwendet wird, die frage ist ja, ob man des in nem neuen system zum alufen kriegt, das werd ich mal testen....
      und auf jeden fall sollte ich mal irgendwie herausfinden was das ding eigentlich macht...
      hast du irgendwelche ideen, links, tipps o.ö.?

      danke,
      dolflyer

      1. Hi,

        hmm, ich kann mir gut vorstellen, dass des ding schon so alt is, dass es nimma verwendet wird, die frage ist ja, ob man des in nem neuen system zum alufen kriegt, das werd ich mal testen....

        Also zumindest in dem geposteten Codeausschnitt verwendest du nix, was nicht auch mit CGI (ohne Switch) ginge. Pribier einfach mal aus, CGI::Swich durch CGI zu ersetzen, ob er irgendwo meckert.

        HTH

        wunderwarzenschwein

        --
        ss:} zu:$ ls:} fo:| de:] va:) ch:? sh:( n4:# rl:? br:> js:| ie:( fl:{ mo:)
        1. Hi,

          Hi!

          Also zumindest in dem geposteten Codeausschnitt verwendest du nix, was nicht auch mit CGI (ohne Switch) ginge. Pribier einfach mal aus, CGI::Switch durch CGI zu ersetzen, ob er irgendwo meckert.

          funzt genauso... jetzt hab ich noch ne kleinigkeit umgebessert, und es schient zu funzen, jetzt hab ioch das problem, dass ich den DBD:Adabas noch installen muss...

  3. Hi Rolf,

    ich hab hier ein perlskript, zu beabrieten und bin absoluter perl newbie.

    Dass du das Modul CGI::Switch nicht mehr verwenden sollst, wurde dir ja bereits gesagt. Nur zur Ergänzung: http://www.perldoc.com/perl5.8.0/lib/CGI/Switch.html#top.

    use CGI::Switch;

    Ersetze dies durch use CGI;

    my $q = CGI::Switch->new();

    Ersetze dies durch my $q = new CGI;

    Dann müsste der gepostete Codeschnipsel auch klappen. Allerdings könnte es durchaus sein, dass im weiteren Verlauf des Scripts Funktionen des alten Moduls verwendet werden, die es in CGI.pm nicht mehr gibt. Frage dann einfach noch mal nach.

    Viele Grüße
    Torsten