Johannes: ActivePerl

Kann mir jemand genau erklären, wie ich offline mit ActivePerl für Windows Perl-Scripts austesten kann!
Immer wenn ich auf eine *.pl Datei linke, erscheint ein Dosfensterchen, das gleich wieder verschwindet!

  1. Hallo Johannes!

    Kann mir jemand genau erklären, wie ich offline mit ActivePerl für Windows Perl-Scripts austesten kann!
    Immer wenn ich auf eine *.pl Datei linke, erscheint ein Dosfensterchen, das gleich wieder verschwindet!

    Na das ist doch schon gut. Klar erscheint ein DOS-Fenster, denn schliesslich sind Perl-Scripte Kommandozeilenprogramme. Und es verschwindet gleich wieder, weil das nun mal so ist, wenn ein Kommandozeilenprogramm zu Ende ist. Deshalb macht man gewoehnlich selber einen DOS-Prompt auf ("Eingabeaufforderung" irgendwo im Startmenue) und startet die Script von dort aus, entweder mit
      script.pl      (ist bei Dir offenbar so konfiguriert, dass das funktionieren wird)
    oder mit
      perl script.pl        (perl.exe muss im PATH sein)
    Das hat auch den Vorteil, dass Du Deine Scripte schnell mal auf Syntaxfehler checken kannst, ohne sie gleich auszufuehren:
      perl -cw script.pl

    So long

    1. Hallo!

      Aber wie kann ich es machen dass das ganze am Browser ausgegeben wird? Muss ich dazu einen Webserver installieren?

      Hallo Johannes!

      Kann mir jemand genau erklären, wie ich offline mit ActivePerl für Windows Perl-Scripts austesten kann!
      Immer wenn ich auf eine *.pl Datei linke, erscheint ein Dosfensterchen, das gleich wieder verschwindet!

      Na das ist doch schon gut. Klar erscheint ein DOS-Fenster, denn schliesslich sind Perl-Scripte Kommandozeilenprogramme. Und es verschwindet gleich wieder, weil das nun mal so ist, wenn ein Kommandozeilenprogramm zu Ende ist. Deshalb macht man gewoehnlich selber einen DOS-Prompt auf ("Eingabeaufforderung" irgendwo im Startmenue) und startet die Script von dort aus, entweder mit
        script.pl      (ist bei Dir offenbar so konfiguriert, dass das funktionieren wird)
      oder mit
        perl script.pl        (perl.exe muss im PATH sein)
      Das hat auch den Vorteil, dass Du Deine Scripte schnell mal auf Syntaxfehler checken kannst, ohne sie gleich auszufuehren:
        perl -cw script.pl

      So long

      1. Aber wie kann ich es machen dass das ganze am Browser ausgegeben wird? Muss ich dazu einen Webserver installieren?

        Ja. <../../tgb.htm>, <../../tgb.htm>. Als Software wuerde ich auf jeden Fall den Apachen empfehlen, auch unter Windows.
        Trotzdem wirst Du die Kommandozeile schaetzen lernen, denn der Output eines perl -cw ist nunmal aussagekraeftiger als "Internal Server Error", bzw. ist das Nachsehen im Errorlog dann noch umstaendlicher.

        [full quote]

        Bitte demnaechst unterlassen.

        So long

        1. Aber wie kann ich es machen dass das ganze am Browser ausgegeben wird? Muss ich dazu einen Webserver installieren?

          Ja. <../../tgb.htm>, <../../tgb.htm>. Als Software wuerde ich auf jeden Fall den Apachen empfehlen, auch unter Windows.

          Die Empfehlung ist prima, nur wird der gute Johannes da eine große Überraschung erleben, weil er trotzdem seine Perl-scripts nicht zum Laufen kriegt ...
          Das liegt an "ActivePerl". Der IIS kommt damit klar, aber Apache braucht ein Modul, um perl-scripts auszuführen, das ist nicht standardmäßig dabei, wenn man sich den download von http://www.Apache.org holt.
          Also besser gleich das ganze Paket mod_perl holen (http://perl.apache.org/), da ist der Apache ordentlich konfiguriert schon gleich mit dabei und noch allerhand mehr.

          Nun gibt es bloß das Problem, daß bestimmte Sachen, die "ActiveState"-Perl kann, mit mod-perl nicht gehen und umgekehrt. Zum Beispiel kann man mit "ActiveState"-Perl ASP-Files mit Perl-Script erstellen, was mod_perl nicht kann. Dafür kann man einige Module  -  z.B. EmbPerl  -  , die mit mod_perl prima funktionieren, in "ActiveState"-Perl nicht einbauen. Oder weißt du das besser (würde mich freuen) ??

          Christoph S.

          1. Hallo Christoph!

            Das liegt an "ActivePerl". Der IIS kommt damit klar, aber Apache braucht ein Modul, um perl-scripts auszuführen, das ist nicht standardmäßig dabei, wenn man sich den download von http://www.Apache.org holt.

            Sorry, aber das ist totaler Humbug. Der Apache ruft zum Ausfuehren eines CGI-Scripts das Programm auf, das in der ersten Zeile hinter dem #! genannt wird, und wenn da #!c:/perl/bin/perl.exe steht, dann wird genau dieses Programm ausgefuehrt. Ich habe damit noch keine Probleme gehabt.

            Was mod_perl betrifft, so haelt das meines Wissens einen Interpreter persistent im Speicher, damit der nicht bei jedem einzelnen Aufruf einer URL neu gestartet werden muss (wie das beim normalen CGI eben so ist). Das bringt allerdings auch einige Probleme mit sich (siehe z.B. http://perl.apache.org/dist/mod_perl_traps.html).
            Naja, und mod_perl ist nunmal kein ASP-Interpreter, weshalb mich auch nicht wundert, dass ASPs mit PerlScript drin nicht ausgefuehrt werden. Aber vielleicht hilft Dir ja http://www.apache.org/related_projects.html#apacheasp irgendwie weiter.

            So long

            1. Hallo Calocybe,

              [...]

              Der Apache ruft zum Ausfuehren eines CGI-Scripts das Programm auf, das in der ersten Zeile hinter dem #! genannt wird, und wenn da #!c:/perl/bin/perl.exe steht, dann wird genau dieses Programm ausgefuehrt.

              [...]

              Und noch zur Ergänzung: Man kann dem Apache sogar beibringen, den Pfad zum Perlinterpreter aus der Windows-Registry zu lesen. Damit braucht man nicht jedesmal beim Upload den Interpreterpfad im Skript zu ändern, wenn man nicht gerade lokal die gleiche dateistruktur wie bei provider aufgebaut hat ;-)
                 AddHandler cgi-script .cgi .pl
              -> ScriptInterpreterSource registry

              Gruß AlexBausW

            2. Tach, Calo ,

              Das liegt an "ActivePerl". ...

              Sorry, aber das ist totaler Humbug. Der Apache ruft zum Ausfuehren eines CGI-Scripts das Programm auf, das in der ersten Zeile hinter dem #! genannt wird, und wenn da #!c:/perl/bin/perl.exe steht, dann wird genau dieses Programm ausgefuehrt. Ich habe damit noch keine Probleme gehabt.

              Also weißt du es doch besser <g>. Trotzdem: wenns mir nicht passiert wär, hätt ich das ja nicht geschrieben; und Probleme hatte ich sehr wohl. Ich hätt es vielleicht genauer benennen sollen: was du jetzt geantwortet hast, mag gelten, solange das eingesetzte Script *.cgi heißt, da hats der Apache bei mir durchaus auch gemacht. Aber wenn ich einen Namen als *.pl-Datei verwenden wollte  -  kann ja manchmal nötig sein  -  dann gings eben nicht, trotz aller Korrektheit bei der Pfadangabe und trotz aller korrekten Eintragungen in der httpd.conf (AddHandler usw.)

              Naja, und mod_perl ist nunmal kein ASP-Interpreter, weshalb mich auch nicht wundert, dass ASPs mit PerlScript drin nicht ausgefuehrt werden. Aber vielleicht hilft Dir ja http://www.apache.org/related_projects.html#apacheasp irgendwie weiter.

              Ich hatte das "Problem" vor längerer Zeit mal und habs dann für mich so gelöst, daß ich halt ein eigenes Modul (*.pm) gebaut hab.

              So long

              so long ebenfalls

              Christoph S.

  2. Hallo Johannes,

    Mach doch einfach zuerst eine Dosbox auf, wechsel in das Verzeichnis in dem Dein Skript liegt, und gib folgendes am Dos-Prompt ein:
       c:\pfad\zu\skripten> perl -cw deinskript.pl          # um Dein Skript _nur_ zu "kompilieren" und dabei alle Fehlermeldungen zu erhalten
       c:\pfad\zu\skripten> perl -w deinskript.pl           # um Dein Skript auszuführen, und alle Fehlermeldungene zu erhalten
    Die von Dir eigenhändig geöffnete Dosbox sollte dann auch nicht nach dem Programmende vom OS geschlossen werden (denke ich ;-).

    Gruß AlexBausW

    1. Hallo Johannes,

      Mach doch einfach zuerst eine Dosbox auf, wechsel in das Verzeichnis in dem Dein Skript liegt, und gib folgendes am Dos-Prompt ein:
         c:\pfad\zu\skripten> perl -cw deinskript.pl          # um Dein Skript _nur_ zu "kompilieren" und dabei alle Fehlermeldungen zu erhalten
         c:\pfad\zu\skripten> perl -w deinskript.pl           # um Dein Skript auszuführen, und alle Fehlermeldungene zu erhalten
      Die von Dir eigenhändig geöffnete Dosbox sollte dann auch nicht nach dem Programmende vom OS geschlossen werden (denke ich ;-).

      Gruß AlexBausW

      Ja, das hab ich auch gemacht, aber das ist halt umständlich!

  3. Kann mir jemand genau erklären, wie ich offline mit ActivePerl für Windows Perl-Scripts austesten kann!
    Immer wenn ich auf eine *.pl Datei linke, erscheint ein Dosfensterchen, das gleich wieder verschwindet!

    Hallo, die Kollegen haben das Wichtigste ja schon gesagt, hier noch ein Tipphttp://i-netlab.de/offonline/offonline.htm, da ist beschrieben wie Du PerlScripts im Fenster des Editors Textpad http://www.textpad.comablaufen lassen kannst...; Rolf

  4. Hallo Johannes, (Anrede...)

    wenn du als letzte Zeile in dein zu testendes Script

    <>;

    einbaust, (ausgeschrieben: <STDIN>;) dann wartet es an dieser Stelle auf die Eingabe einer Zeile. Also reicht dann ein Druck auf [Return] um das Fenster zu schließen.

    Falls du CGI-Scripts in Perl testen willst, wirst du aber mit total offline nicht weiter kommen. Dann brauchst du wenigstens einen lokalen Websever. Meine Empfehlung für solche einfachen Tests ist da immer wieder (weil schön klein und einfach zu "konfigurieren") Tiny Web (http://www.ritlabs.com/tinyweb/). Wenn du's richtig ernst meinst, dann nimm gleich Apache (http://www.apache.org).

    CYa                   (Gruß am Schluß...)
    GONZO

  5. Kann mir jemand genau erklären, wie ich offline mit ActivePerl für Windows Perl-Scripts austesten kann!
    Immer wenn ich auf eine *.pl Datei linke, erscheint ein Dosfensterchen, das gleich wieder verschwindet!

    hi, erstmal brauchst du nen webserver auf deinem lokalen pc. zum beispil apache ist ein guter. dann musst du, wenn du auf die datei linkst, nicht den normalen pfad auf der festplatte (c:...) sondern deinen webserverpfad angeben (http://127.0.0.1/cgi-bin/skript.pl). das skript (pl-datei) muss dabei in dem cgi-bin verzeichnisses des webserves liegen, sonst weiss er nicht was das überhaupt fürn skript ist. dasselbe problem hatte ich nämlich auch schon!

    schmaidt

    1. hi, erstmal brauchst du nen webserver auf deinem lokalen pc. zum beispil apache ist ein guter. dann musst du, wenn du auf die datei linkst, nicht den normalen pfad auf der festplatte (c:...) sondern deinen webserverpfad angeben (http://127.0.0.1/cgi-bin/skript.pl

      hi,
      nee, _diese_ Pfadangabe braucht er nicht unbedingt (sie kann auch "localhost" heißen).
      Es ist vielmehr zu empfehlen, sich irgendeinen virtuellen Host (http://meine.künftigen.Seiten) mit der httpd.conf einzurichten.
      Das hat den unschätzbaren Vorteil, daß man perl-Scripts lokal so testen kann, als wären sie bereits dorthin hochgeladen, wohin sie mal sollen.

      Christoph S.

  6. Hallo Johannes,

    Du brauchst zwei wichtige Sachen, einen Webserver, und Perl.
    Wo Du diese Programme herbekommst, wie Du sie konfigurierst, kannst Du auf meiner Homepage (URL siehe oben) nachlesen. Solltest Du mit Netscape als Webbrowser arbeiten, hier eine Alternativ-URL < http://www.cgi-starter.de/anleitung2.html>.

    Gruß Jens

    1. Hallo Johannes,

      Du brauchst zwei wichtige Sachen, einen Webserver, und Perl.
      Wo Du diese Programme herbekommst, wie Du sie konfigurierst, kannst Du auf meiner Homepage (URL siehe oben) nachlesen. Solltest Du mit Netscape als Webbrowser arbeiten, hier eine Alternativ-URL < http://www.cgi-starter.de/anleitung2.html>.

      Gruß Jens

      Danke! Ich werde mir Omni... und Apache installieren! (oder geht Apache in WIndows nicht?)

      1. Hallo Jens,

        klar löppt Apache unter Windows. Gut sogar.
        Aber wieso willst du dazu noch OmniHTTPD installieren?

        CYa
        GONZO