detlevk: Anfängerfrage zu selfmail (auf selftml)

Beim Versuch das Skript selfmail.pl nach entsprechender Anpassung zu nutzen erhalte ich die Fehlermeldung:
Can't locate object method "new" via package "CGI" at selfmail.cgi
Die entsprechende Anweisung dort lautet:
$query = new CGI;
Als Anfänger sagt mir diese Fehlermeldung leider nichts. CGI ist aber doch ein Standardmodul, das wo Perl installiert ist doch zur Verfügung stehen sollte?

  1. Als Anfänger sagt mir diese Fehlermeldung leider nichts. CGI ist aber doch ein Standardmodul, das wo Perl installiert ist doch zur Verfügung stehen sollte?

    Ich bin sehr skeptisch falls du dieses Skript:
    http://aktuell.de.selfhtml.org/artikel/cgiperl/form-mail/index.htm
    verwenden willst.

    Auf den ersten Blick fehlt mir ...

    #!/usr/bin/perl

    auf, sollte aber ...

    #!/usr/bin/perl -wT

    ... sein. Sprich warnings und Taintmode an.
    Dann fehlt mir die Zeile ...

    use strict;

    ... mit allem, was es zur Folge hat.
    Alle Variablen müssen mit "my" deklariert werden.

    Des Weiteren brauchen Formmailer heute einige ausgeklügelte Massnahmen, um Missbrauch zu verhindern. Das ist ein grösseres Thema.
    Auch darfst du nicht einfach sendmail voraussetzen. Vielleicht ist ein andere Mailprogramm auf dem Server verfügbar.

    Anpassung dieses Skripts ist zwar möglich, aber vielleicht der falsche Ansatz.

    Einen Formmailer zu schreiben ist für einen Perl-Anfänger nicht gerade die leichteste Aufgabe.

    mfg Beat

    --
       <°)))o><                      ><o(((°>o
    1. Als Anfänger sagt mir diese Fehlermeldung leider nichts. CGI ist aber doch ein Standardmodul, das wo Perl installiert ist doch zur Verfügung stehen sollte?

      Ich bin sehr skeptisch falls du dieses Skript:
      http://aktuell.de.selfhtml.org/artikel/cgiperl/form-mail/index.htm
      verwenden willst.

      Das Problem mit solchen vorgefertigten Skripten scheint zu sein, dass der Autor alles mögliche voraussetzt, was für einen ANfänger nicht selbstverständlich ist!

      Auf den ersten Blick fehlt mir ...

      #!/usr/bin/perl

      auf, sollte aber ...

      #!/usr/bin/perl -wT

      ... sein. Sprich warnings und Taintmode an.
      Dann fehlt mir die Zeile ...

      use strict;

      ... mit allem, was es zur Folge hat.
      Alle Variablen müssen mit "my" deklariert werden.

      Des Weiteren brauchen Formmailer heute einige ausgeklügelte Massnahmen, um Missbrauch zu verhindern. Das ist ein grösseres Thema.
      Auch darfst du nicht einfach sendmail voraussetzen. Vielleicht ist ein andere Mailprogramm auf dem Server verfügbar.

      Sendmail ist verfügbar, wenn auch auf einem anderen Pfad. Dieser wurde angepasst.

      Anpassung dieses Skripts ist zwar möglich, aber vielleicht der falsche Ansatz.

      Einen Formmailer zu schreiben ist für einen Perl-Anfänger nicht gerade die leichteste Aufgabe.

      Irgendwo muss ich anfangen. Und gerade die Auswertung von Webformularen wird häufig gebraucht. In der Literatur wird man gerade als Anfänger immer wieder darauf verwiesen, dass genug Lösungen "aus der Tüte" im Internet verfügbar sind, die man anpassen kann.

      mfg Detlev

      mfg Beat

      1. Einen Formmailer zu schreiben ist für einen Perl-Anfänger nicht gerade die leichteste Aufgabe.

        Irgendwo muss ich anfangen. Und gerade die Auswertung von Webformularen wird häufig gebraucht. In der Literatur wird man gerade als Anfänger immer wieder darauf verwiesen, dass genug Lösungen "aus der Tüte" im Internet verfügbar sind, die man anpassen kann.

        Das ist wahr, aber leider nur die halbe Wahrheit.
        Formmailer haben eine kontroverse Geschichte hinter sich, und deshalb empfehle ich, ein Produkt einzusetzen, das in jüngster Zeit weiter entwickelt wurde und eine gute Presse hat. Es gibt viele veraltete Lösungen und von diesen ist abzuraten.

        Der andere Weg ist, dass man sich in die Problematik Formmailer hineinarbeitet, und Stück für Stück sinnvolle Ansätze aufgreift. Wenn es ein Hobby Projekt ist, und kein Produktionscode, dann ist es auch für einen Perl-Beginner OK.

        Zu Testzwecken würde ich gar nicht Sendmail verwenden, sondern die formatierte Mail in eine lokale Textdatei drucken lassen.

        mfg Beat

        --
                         /|
          <°)))o><      / |    /|
                    ---- _|___/ |     ><o(((°>
                   OvVVvO    __ |         ><o(((°>
        <°)))o><  /v    v\/  |
         <°)))o>< ^    ^/_/_         ><o(((°>
                   ^^^^/___/
        ><o(((°>    ----       ><o(((°>
           <°)))o><                      ><o(((°>o
  2. Hallo detlevk!

    Abgesehen von Beats berechtigten Hinweisen:

    Can't locate object method "new" via package "CGI" at selfmail.cgi

    Bist Du sicher das es die ganze Meldung ist? Fehlt da nicht etwas in Klammern? Z.B. das hier:

    Can't locate object method "new" via package "CGI" (perhaps you forgot to load "CGI"?)

    Als Anfänger sagt mir diese Fehlermeldung leider nichts.

    Wenn das Modul gefunden wurde, und also der Hinweis, den ich eben zitiert habe (»perhaps you forgot...«), nicht da ist, deutet diese Fehlermeldung darauf hin, dass eine aufgerufene Methode im Modul nicht vorhanden ist - oder nicht importiert wurde.

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --

    _ - jenseits vom delirium - _
    [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    Nichts ist unmöglich? Doch!
    Heute schon gegökt?
    1. Hallo Patrick,

      CGI wurde geladen und die Meldung ist vollständig bis auf die Angabe der Zeile, in der der Fehler gefunden wurde.
      Anpassung von vorgegebenen Skripten ist eben immer schwierig, wenn nicht angegeben wird, was vorausgesetzt wird!

      Detlev

      Hallo detlevk!

      Abgesehen von Beats berechtigten Hinweisen:

      Can't locate object method "new" via package "CGI" at selfmail.cgi

      Bist Du sicher das es die ganze Meldung ist? Fehlt da nicht etwas in Klammern? Z.B. das hier:

      Can't locate object method "new" via package "CGI" (perhaps you forgot to load "CGI"?)

      Als Anfänger sagt mir diese Fehlermeldung leider nichts.

      Wenn das Modul gefunden wurde, und also der Hinweis, den ich eben zitiert habe (»perhaps you forgot...«), nicht da ist, deutet diese Fehlermeldung darauf hin, dass eine aufgerufene Methode im Modul nicht vorhanden ist - oder nicht importiert wurde.

      Viele Grüße aus Frankfurt/Main,
      Patrick

      1. Hallo detlevk!

        Zitiere bitte nur das, worauf Du Dich beziehst, und nicht das ganze Posting, danke!

        CGI wurde geladen und die Meldung ist vollständig bis auf die Angabe der Zeile, in der der Fehler gefunden wurde.

        Dann sollte eine solche Meldung nicht kommen. Welche Perl-Version und welche Version des CGI-Moduls sind denn vorhanden?

        Viele Grüße aus Frankfurt/Main,
        Patrick

        --

        _ - jenseits vom delirium - _
        [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
        Nichts ist unmöglich? Doch!
        Heute schon gegökt?
        1. Hallo detlevk!

          CGI wurde geladen und die Meldung ist vollständig bis auf die Angabe der Zeile, in der der Fehler gefunden wurde.

          Dann sollte eine solche Meldung nicht kommen. Welche Perl-Version und welche Version des CGI-Moduls sind denn vorhanden?

          Die Perl-Version ist 5.008008.
          Über das CGI-Modul konnte ich jetzt nichts herausfinden.
          Provider ist allinkl.com.
          Wenn alle Stricke reißen, kann ich deren Support noch in Anspruch nehmen.
          Ansonsten vielen Dank für die Antworten. Manches wurde dadurch immerhin klarer. Der Lernprozess kommt ins Laufen (hoffentlich!)

          mfg Detlev

          Viele Grüße aus Frankfurt/Main,
          Patrick

          1. Die Perl-Version ist 5.008008.
            Über das CGI-Modul konnte ich jetzt nichts herausfinden.

            wenn in deinem Skript folgendes steht

            use CGI;  
            my $query = new CGI;  
            
            

            Dann kann die Fehlermeldung nicht kommen. Es sei denn du hast ein eigenes CGI Modul. Die Version spielt da keine Rolle.

            Struppi.

          2. Hallo detlevk!

            Die Perl-Version ist 5.008008.

            Nicht die Allerletzte, aber wohl die, welche die meisten Hoster mittlerweile drauf haben (habe ich bei 1&1 auch).

            Über das CGI-Modul konnte ich jetzt nichts herausfinden.

            Ein einfaches Skript:

            #!/usr/bin/perl -w
            use CGI qw(header);
            print header();
            print $CGI::VERSION;

            verrät sie Dir (bei 1&1:  3.29, also neuer als die, die ich hier auf dem PC habe - hier habe ich eh auf drei Rechnern drei Perl-Versionen *g*).

            Wenn alle Stricke reißen, kann ich deren Support noch in Anspruch nehmen.

            Du könntest vorher den Ausschnitt aus Deinem Skript posten, wie Du das Modul einbindest bis zu der Deklaration Deiner $query-Variable.

            Viele Grüße aus Frankfurt/Main,
            Patrick

            --

            _ - jenseits vom delirium - _
            [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
            Nichts ist unmöglich? Doch!
            Heute schon gegökt?
      2. CGI wurde geladen und die Meldung ist vollständig bis auf die Angabe der Zeile, in der der Fehler gefunden wurde.

        Das kann eigentlich nicht sein.

        Struppi.