Christoph: Noch mal Formular: Perl kompilieren?

Hallo zusammen,

noch mal Thema Formular:

Ich habe die Formularstruktur von dieser Seite
http://selfaktuell.teamone.de/artikel/cgiperl/form-mail/index.htm#a3
mal übernommen, verweise auf eine "selfmail.pl" (Inhalt auf der gleichen Seite weiter oben) und habe ein Problem:

Wenn ich mein Formular absende, zeigt der Browser mir nur den Inhalt von selfmail.pl an, so wie er auch auf der SelfHTML-Seite steht. In Text quasi. Muss ich das .pl noch irgendwie compilen damit das funktioniert oder wie läuft das?

Danke für sachdienliche Hinweise,
Christoph

  1. Hi,

    Du  mjusst die erste Zeile im Perl Script vermutlich diese:
    #!/usr/bin/perl

    entprechend anpassen, wo eben bei dir die entwprechende Perl version ist.

    Z.B. auf windows
    #!c:/perl/bin/perl.exe

    tja und dann musst Du natürlich auch Deinem Webserver in der http.conf sagen, dass diese .pl dateien ausführbar sein sollen.
    Z.B. folgende Zeile

    AddHandler cgi-script .pl

    Dazu muss natürlich noch das Module cgi-handler wie filgt geladen werden.

    LoadModule cgi_module modules/mod_cgi.so

    Der ist aber vermutlich schon drinnen innder http.conf.

    Gruss Matze

    1. Hallo,

      ich finde bei mir auf dem Rechner keine perl.exe. Aber Formulare auf allen möglichen Seiten im Internet, die mit .pl's arbeiten, funktionieren doch auch... Ist das ein Indikator dafür, dass bei mir irgendwo eine perl.exe liegen muss? Und davon mal ab: CGI-Skripte in Perl liegen im Internet ja auch nicht in Maschinensprache geschrieben herum. Oder?

      Ich fürchte es gibt meinerseits einfach ein paar Verständnisprobleme. ;-)

      Viele Grüße
      Christoph

      1. Hallo,

        ich finde bei mir auf dem Rechner keine perl.exe.

        Dann dürfte Perl auf deinem Rechner nicht installiert sein.

        Aber Formulare auf allen möglichen Seiten im Internet, die mit .pl's arbeiten, funktionieren doch auch. Ist das ein Indikator dafür, dass bei mir irgendwo eine perl.exe liegen muss?

        Nein. Wenn du im WWW ein Perl-Script aufrufst, dann wird dies auf dem Server ausgeführt, wo dann selbstverständlich Perl installiert sein muss. Im Ergebnis der Ausführung der Scripte wird an den Client, also an deinen lokalen Rechner, HTML-Code gesandt, der dann im Browser anzeigt wird. Ergo brauchst du für die Ausführung von Perl-Scripten im WWW auf deinem Rechner kein Perl.

        Grüße
        Torsten

      2. Servus,

        Perl Code muss man nicht kompilieren, sondern werden als Script durch einen Perl interpreter ausgeführt.

        Bevor ich jedoch weiter mache folgende Fragen:
        1. Welches System hast Du?
        2. Welchen Webserver
        3. Betreibst Du Webserver selbst oder wird das ehostet.

        Also bei Perl läuft es so ähnlich wie mit Java.
        Der Perl Code -> Klartext wird von einem Interpreter ausgeführt in dem Fall die perl.exe als Beispiel.
        Lediglich bei Java werden die Sourcen zu einem Bity Code kompiliert.

        Gruss Matze

        1. Servus zurück,

          1. Welches System hast Du?

          Ich benutze hier Windows NT im Firmennetzwerk.

          1. Welchen Webserver

          Einen eigenen, laut Aussage des Systemadministrators ein Nicht-Unix.

          1. Betreibst Du Webserver selbst oder wird das ehostet.

          Ich selber betreibe ihn nicht, Auskunft über die serverseitigen Technologien könnte auch nur ein Externer geben, der uns diesen Server bereitstellt.

          Also bei Perl läuft es so ähnlich wie mit Java.
          Der Perl Code -> Klartext wird von einem Interpreter ausgeführt in dem Fall die perl.exe als Beispiel.
          Lediglich bei Java werden die Sourcen zu einem Bity Code kompiliert.

          Danke soweit für diese Infos! (Auch an ThorstenA!)

          Grüße
          Christoph

          1. Servus,

            ja dann iost es einfach.
            Sag Deinem externen, dass er Perl auf der Maschine verfügbar machen sollt ;-)

            Gruss Matze

            1. ja dann iost es einfach.
              Sag Deinem externen, dass er Perl auf der Maschine verfügbar machen sollt ;-)

              Der wird sich freuen. Wir haben hier Ultra-Super-Duper-Spezial-Preise für den Webserver gerade WEIL wir die Menschen vom Hosting-Service durchgehend und intensiv in Ruhe lassen. ;-) Aber na gut. Muss ich jetzt wohl oder übel jemanden aufwecken.

              Schönen Tach Dir
              Christoph

          2. hallo,

            Ich benutze hier Windows NT im Firmennetzwerk.

            1. Welchen Webserver
              Einen eigenen, laut Aussage des Systemadministrators ein Nicht-Unix.

            Dann sind die Anmerkungen von Matze zur Konfigurationsdatei hinfällig. Könntest du aber bitte noch sagen, ob das der IIS ist oder noch ein anderer? Auch der IIS läßt sich so einrichten, daß man mit ihm PERL-Scripts ausführen lassen kann, Voraussetzung ist allerdings, daß auf demselben Rechner, auf dem er installiert ist, auch PERL installiert wurde (siehe der Hinweis von Torsten).

            Ich selber betreibe ihn nicht, Auskunft über die serverseitigen Technologien könnte auch nur ein Externer geben, der uns diesen Server bereitstellt.

            Dann wirst du höchstwahrscheinlich Pech haben.

            Also bei Perl läuft es so ähnlich wie mit Java.

            Das war ein nicht ganz zutreffender Vergleich von Matze.

            Grüße aus Berlin

            Christoph S.

            1. Also bei Perl läuft es so ähnlich wie mit Java.

              Das war ein nicht ganz zutreffender Vergleich von Matze.

              Dann werd mal konkret.

              Gruss Matze

              1. hallo Matze,

                Also bei Perl läuft es so ähnlich wie mit Java.
                Das war ein nicht ganz zutreffender Vergleich von Matze.
                Dann werd mal konkret.

                Bitte, wenn du das wünschst: Wenn du mit JAVA arbeiten möchtest, gehst du standardmäßig so vor, daß du eine Datei "programm.java" erstellst  -  das ist dein Script. Dann übergibst du das dem JAVA-Compiler "javac" mit dem entsprechenden Konsolenbefehl, und der erstellt dir eine kompilierte Datei "programm.class"  -  die kannst du dann auf deinem System ausführen.

                Wenn du mit PERL arbeitest, schreibst du ein Script, das in der "shebang", also in der ersten Zeile, den Pfad zum Interpreter enthält. Das Script selbst muß nicht an irgendeinen Compiler übergeben werden, du kannst es im System oder über einen Webserver einsetzen  -  falls es CGI-Aufgaben erledigen soll. Aber egal, ob du es von der Konsole aus aufrufst oder über einen Webserver, der "Interpreter" stößt ein paar Compiliervorgänge im Speicher an, die jedoch nirgends dauerhaft gespeichert werden müssen. Es gibt also zwischen dem, was "Kompilieren" bei JAVA bedeutet und dem, was es bei PERL (normalerweise) bedeutet, vor allem den Unterschied, daß du das Kompilierergebnis für JAVA zwingend als eigenes Programm speichern mußt, ehe du es ausführen kannst, während bei PERL ein paar Kompiliervorgänge flüchtig ablaufen und nach Abarbeitung des Scripts ganz einfach vorbei sind  -  falls dein Script fehlerfrei ist.

                Anders sieht es aus, wenn du dir aus einem PERL-Script eine EXE zusammenbauen möchtest. Auch das ist möglich, dafür gibt es eigene Compiler, und _dann_ läuft derselbe Arbeitsvorgang ab wie bei JAVA. Aber dieser Arbeitsablauf ist eine Ausnahme.

                Grüße aus Berlin

                Christoph S.

                1. Hallo Christoph,

                  Also bei Perl läuft es so ähnlich wie mit Java.
                  Der Perl Code -> Klartext wird von einem Interpreter ausgeführt in dem Fall die perl.exe als Beispiel.
                  Lediglich bei Java werden die Sourcen zu einem Bity Code kompiliert.

                  was habe ich hier weniger ausführlich gesagt???
                  Lerne bitte endlich mal richtig Informationen heraus zu Kommentieren.
                  Und Kommentiere nicht eine unvollständige Aussage.

                  Gruss Matze

                  1. hallo Matze

                    Also bei Perl läuft es so ähnlich wie mit Java.
                    Der Perl Code -> Klartext wird von einem Interpreter ausgeführt in dem Fall die perl.exe als Beispiel.
                    Lediglich bei Java werden die Sourcen zu einem Bity Code kompiliert.
                    was habe ich hier weniger ausführlich gesagt?

                    Nicht "weniger ausführlich", sondern _falsch_. Es "läuft" mit PERL eben nicht "ähnlich wie mit JAVA", sondern vollkommen anders.

                    Lediglich bei Java werden die Sourcen zu einem Bity Code kompiliert.

                    Korrekt wäre "Byte Code", aber das ist unwichtig. PERL hat mit JAVA genau gar nichts zu tun. Allerdings sind beide auf sehr sehr unterschiedlichen Wegen von C abgeleitet. Wenn du den Kompiliervorgang von JAVA mit C vergleichen wolltest, wäre es einigermaßen korrekt, bei PERL trifft es so ohne weiteres eben nicht zu.

                    Und Kommentiere nicht eine unvollständige Aussage.

                    Dann liefere bitte vollständige Aussagen  -  ich habe das, was du zur httpd.conf angemerkt hast und was ebenfalls "unvollständig" war, gar nicht erst aufgegriffen.

                    Grüße aus Berlin

                    Christoph S.

                    1. Servus,

                      dann denk bitte darüber nach, worauf sich meine Aussage bezog!
                      Nämlich darauf, dass Perl den Quellcode interpretiert und bearbeitet und bei Java ein Byte Code interpretiert wird.

                      Das war die Aussage, die du mal wieder nicht erkennen konntest aber damit wieder jemand anderen für Dumm hinzustellen versuchst!

                      Lass es einfach wenn Du nicht verstehst, dass das mit java nur mal angehaucht wurde, damit er versteht, dass Perl "ähnlich" Richtung geht.
                      Seine Perl Scripte interpretiert werden.

                      Von kompilieren kein Wort oder???
                      Darum geht es auch gar nicht falls es Dir zum Thread schon aufgefallen ist!

                      Gruss Matze

  2. hallo,

    Wenn ich mein Formular absende, zeigt der Browser mir nur den Inhalt von selfmail.pl an

    Das heißt, dein Webserver sendet den Text an den Browser, statt das Script zur Abarbeitung an den Perl-Interpreter zu übergeben. Du mußt also deinen Webserver korrekt instruieren.

    Kannst du denn dein Script auf der Konsole ausführen lassen?

    Grüße aus Berlin

    Christoph S.

  3. Hallo Christoph,

    wenn Du CGI-Skripte auf deinem lokalen Rechner testen möchtest, muss darauf ein Webserver (z.B. Apache) und Perl installiert sein.

    Gruß
    Helmut Weber

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Hallo Christoph,

      wenn Du CGI-Skripte auf deinem lokalen Rechner testen möchtest, muss darauf ein Webserver (z.B. Apache) und Perl installiert sein.

      Danke für diese Info, ich werde mich in diese Richtung dann weiter schlau machen. Die Frage bleibt natürlich, ob mir diese Lösung dann tatsächlich 1:1 anzeigen kann, was ich hinterher im "Normalbetrieb" (online) zu sehen bekommen werde. Dass alles im Apachetest funktioniert wie gewünscht, und unter Realbedingungen wird's dann eine Fehlgeburt. ;-)

      Beste Grüße
      Christoph

      1. Hallo Christoph,

        Natürlich kann es zwischen den einzelnen Systemen (Provider-Webserver und HomeOffice-Webserver) zu unterschieden kommen. Aber ich denke einmal, wenn Du Dir selbst einen Webserver aufsetzen, und mit Perl verbinden kannst, sollten die kleinen Unterschiede zwischen den Systemen auch für Dich lösbar sein.

        Gruß
        Helmut Weber

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
  4. hi Christoph,

    bring ersteinmal einen lokalen Webserver (siehe i-netlab Links)
    und PERL zum Laufen.

    Dann eine einfaches *Helo World* CGI.

    Beim Formmailer helfe ich dir gerne weiter, Voraussetzung: Dein Provider unterstützt PERL/CGI. Denn dort soll es ja laufen...

    Viele Grüße, Rolf

    PS: ein Feedbackformular findest du auch auf i-netlab.de - falls du mir ne Mail schicken möchtest, falls du gar nicht mehr weiterkommen solltest.

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?