Steve: Frage Open Perl IDE

Hallo zusammen,

ich habe heute die Entwicklungsumgebung Open Perl IDE installiert.

Damit kann ich prima Perl Skripe testen, indem ich imn Tool mittels Run  das Skript ablaufen lasse.

Wie kann ich aber das Skript testen, wenn der Aufruf mit Paramtern erfolgt?

z.B.: http://localhost/cgi-bin/test.pl?action=read&nr=1

Wenn ich in der Konsole von Open Perl IDE diesen Befehl http://localhost/cgi-bin/test.pl?action=read&nr=1 passiert nichts.

Weiss jemand wie man Skripte mit Paramterübergabe testen / debuggen kann?

Danke im voraus...

Steve

  1. z.B.: http://localhost/cgi-bin/test.pl?action=read&nr=1

    Du meinst CGI Skripte

    Wenn ich in der Konsole von Open Perl IDE diesen Befehl http://localhost/cgi-bin/test.pl?action=read&nr=1 passiert nichts.

    Ich kenne die IDE nicht, aber die CGI Parameter haben nichts mit Perl Parametern zu tun, sondern du musst CGI Parameter separat abfragen je nach Methode am sinnvollsten mit dem Modul CGI.

    Struppi.

    1. Hi Struppi

      "Ich kenne die IDE nicht, aber die CGI Parameter haben nichts mit Perl Parametern zu tun, sondern du musst CGI Parameter separat abfragen je nach Methode am sinnvollsten mit dem Modul CGI."

      Das ist mir schon klar.

      Mit diesem Tool kann ich wunderbar von A-Z mein Skript test.pl testen /debuggen.

      Wie kann ich aber z.b. test.pl?action=read&nr=1 aufrufen und dann einen Breakpoint setzen.

      Hier ist der Link auf das Tool:
      http://open-perl-ide.sourceforge.net/

      1. hallo,

        Hier ist der Link auf das Tool:
        http://open-perl-ide.sourceforge.net/

        Diese GUI ist tasächlich gnz nett, taugt aber meines Wissens genau für deine Fragestellung nicht, da du keine URLs testen kannst, sondern ausschließlich lokale Pfade, also beispielsweise "D:\Scripts\script.pl".

        Willst du ein Script über die CGI-Schnittstelle testen, brauchst du auch einen lokalen Webserver, der die CGI-Schnittstelle für dich bereithält, also beispielsweise einen Apache.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. Hi Christoph S.,

          ich habe auf meinem Rechner einen lokalen Webserver.

          Bis gestern habe ich mir immer die Inhalte der Variablen mit dem PRINT-Befehl anzeigen lassen. Ich habe also im Skript immer eine PRINT Anweisung zum Testen eingefügt. Aber das ist wirklich nicht komfortabel.

          Steve

          1. ich habe auf meinem Rechner einen lokalen Webserver.

            Keine Ahnung ob man das in die IDE einbauen kann. Dazu müßte die IDE ja jederzeit den Server anhalten können, was vermutlich icht geht.

            Bis gestern habe ich mir immer die Inhalte der Variablen mit dem PRINT-Befehl anzeigen lassen. Ich habe also im Skript immer eine PRINT Anweisung zum Testen eingefügt. Aber das ist wirklich nicht komfortabel.

            Es ist allgemein nicht einfach CGI Programme zu debuggen oder Fehler zu finden. Ich habe mir dafür ein Modul erstellt mit dessen Hilfe ich je nach Debug status mir unter der normalen HTML Ausgabe Variabeln und Fehlermeldungen ausgeben lasse.

            Ist der Debug status = 0 dann macht die Funktion nichts.

            Struppi.

            1. Hallo Struppi,

              Es ist allgemein nicht einfach CGI Programme zu debuggen oder Fehler zu finden. Ich habe mir dafür ein Modul erstellt mit dessen Hilfe ich je nach Debug status mir unter der normalen HTML Ausgabe Variabeln und Fehlermeldungen ausgeben lasse.

              Ist der Debug status = 0 dann macht die Funktion nichts.

              wie groß ist denn das Modul? Was macht es genau?

              Greez,
              opi

              --
              Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|
              1. Es ist allgemein nicht einfach CGI Programme zu debuggen oder Fehler zu finden. Ich habe mir dafür ein Modul erstellt mit dessen Hilfe ich je nach Debug status mir unter der normalen HTML Ausgabe Variabeln und Fehlermeldungen ausgeben lasse.

                Ist der Debug status = 0 dann macht die Funktion nichts.

                wie groß ist denn das Modul? Was macht es genau?

                134 Zeilen (mit Kommentaren und Leerzeilen)

                Das Modul macht folgendes.

                einbinden:

                use debug;
                debug::start_debug(5); # 5 ist hier der Debug Level

                ...

                my $obj = new myObject();
                $obj->wert(17);
                ...

                DEBUG 5, "Das Objekt ist", $obj; # 5 = Debug level

                ...

                Ausgabe in deinem Skript:

                print CGI::header(),
                CGI::start_html(),
                .....
                print DEBUG(),
                CGI::end_html();

                Jetzt passiert folgendes.

                1. Der Debug level wird auf 5 gesetzt, d.h. alle Meldungen die mit DEBUG ausgegeben werden sollen, die kleiner oder gleich 5 sind werden gesammelt.

                2. Das Skript läuft und sammelt die Ausgaben mit DEBUG level, meldung, variabel. Wobei die Variabel per Data::Dumper ausgegeben wird.

                3. wird die Funktion ohne Parameter aufgerufen, werden alle gesammelten Meldungen ausgegeben (inkl. der Warnungen die Perl ausgibt, dies wird dadurch erreicht, dass das Skript noch zusätzlich einen eigenen WARN und DIE Handler anlegt)

                Ich glaub ohne das Modul könnte ich gar keine CGI Anwendungen mehr entwickeln.

                Struppi.

  2. Hallo,

    bastel dir ein eigenes Modul "FakeCGI" das die "Formulardaten" von der Kommandozeile einliest und parst. Es sollte sich genauso verhalten wie CGI.
    Dann brauchst du für den livebetrieb nur noch use FakeCGI; gegen use CGI; tauschen.

    gruss

    --
    no strict;
    no warnings;
    79.78 cups of Coffee (Brewed) + Me = Death
    Reklame ist die Kunst, auf den Kopf zu zielen und die Brieftasche zu treffen.