$xNeTworKx: Fehler in einem Perl/CGI Script finden?

Hola,
ich habe ein kleines Problem. In meinem Forumscript, welches von mir geschrieben wurde, hat sich irgendwo ein kleiner Fehler eingeschlichen (use of uninitialized value in concenation...line 513). In einem "normalen" Perl Script wäre die Fehlersuche ja nicht schwierig, da man ja den Debugger -d benutzen kann, aber in einem CGI Script ist der Fehler nie in der Zeile des Scripts, wo die Fehlermeldung angeblich herkommt. (Die Zeile 513 und die umliegenden Zeilen beinhalten nur Text) Es wäre ziemlich mühsam alle 1000 Codezeilen zu durchforsten nach diesem Fehler, deswegen wollte ich fragen, ob es nicht irgendwie eine Möglichkeit gibt den Fehler im CGI Script zu finden.

$xNeTworKx.

--
Mit Computern lösen wir Probleme, die wir ohne sie gar nicht hätten.
  1. Moin!

    (use of uninitialized value in concenation...line 513).
    (Die Zeile 513 und die umliegenden Zeilen beinhalten nur Text)

    Suche in der Zeile ein $,%,@

    fastix

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Meinereinerselbst ist auf der Suche nach Aufträgen
    1. Hola,

      (use of uninitialized value in concenation...line 513).
      (Die Zeile 513 und die umliegenden Zeilen beinhalten nur Text)

      Suche in der Zeile ein $,%,@

      Ich kann jetzt zwar nicht in der Zeile nachsehen (ich weiß auch nicht ob es jetzt genau diese Zeile ist), da ich den Fehler heute im Errorlog noch nicht stehen habe, aber ich versichere dir, es sind keine $ % oder @-Zeichen in der Zeile, die diesen Fehler auslösen. Es ist einfach Text, der mit print q~ ausgegeben wird. Es ist ja so, dass für das CGI Script immer eine andere Zeile die Zeile 513 sein kann, da der Ausgabezustand ja immer anders ist, zB einmal wird die Hauptansicht angezeigt, dann wird mal wieder das Eingabefromular angezeigt, wenn jemand posten will usw, und dummerweise weiß ich nie, welcher "Zustand" diesen Fehler auslöst.

      $xNeTworKx.

      --
      Mit Computern lösen wir Probleme, die wir ohne sie gar nicht hätten.
      1. Moin!

        Es ist ja so, dass für das CGI Script immer eine andere Zeile die Zeile 513 sein kann

        Hoppla? Du erzeugst Dein CGI- Skript dynamisch? Ist das nicht ein wenig übertrieben?

        Also: Das einzige Mal, daß ich bisher ein Programm so geschrieben habe, welches es sich selbst manipuliert, das war eine Kurverndiskussion mit Graph und so weiter. Das ging mit dem BASIC halt nicht anders, als die Funktion hintenran zu poken: "POKE Adresse ASC(Zeichen)".

        Also noch mal: wenn in Deinem Perl- Skript immer mal eine andere Zeile die Nr 533 ist, dann schreibst Du das mit einem anderen Skript immer neu und includierst es dann? Geht das überhaupt? Versucht Perl nicht im Unterscheid zu vielen andern Interpretern das gesamte Skript mitsamst allen Includes in einem Rutsch zu kompilieren?

        Zählen diese bei den Zeilennummern wirklich mit? Na...

        "use of uninitialized value in concenation...line 513" bedeutet, Du hast eine nichtinitialisierte Variable (in einem Vergleich?) verwenden wollen. Bring doch mal die gesamte Fehlermeldung. Und lege das Skript als Textdatei auf einen Server. Du weisst schon: Glaskugel und so.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Meinereinerselbst ist auf der Suche nach Aufträgen
        1. Also noch mal: wenn in Deinem Perl- Skript immer mal eine andere Zeile die Nr 533 ist, dann schreibst Du das mit einem anderen Skript immer neu und includierst es dann? Geht das überhaupt? Versucht Perl nicht im Unterscheid zu vielen andern Interpretern das gesamte Skript mitsamst allen Includes in einem Rutsch zu kompilieren?

          Es geht =) Ich schreibe derzeit an einer Community-Software und habe dafür ein Dutzend Module, die erst zur Laufzeit bei Bedarf mit eval() eingebunden werden. Wenn ich in einem eval-Befehl einen Fehler habe, dann ist die Zeilennummerierung auch für'n Anus.

          Zählen diese bei den Zeilennummern wirklich mit? Na...

          Ja! *g*

          Ich halte es persönlich aber für keinen guten Programmierstil, Code und Text zu vermischen. Kann es vielleicht sein, dass ein GB-Eintrag irgendwelche Sonderzeichen enthalten, die Perl durcheinander bringen?

          Ciaosen,

          Max

          1. Moin!

            Ich halte es persönlich aber für keinen guten Programmierstil, Code und Text zu vermischen. Kann es vielleicht sein, dass ein GB-Eintrag irgendwelche Sonderzeichen enthalten, die Perl durcheinander bringen?

            Es kann alles mögliche sein... Versuch doch mal einen Text/Profil/Nachricht (oder was auch immer) einzugeben, der jeweils mit @, %, oder $ beginnt. Dann diesen zu bearbeiten (soweit das die user auch können) und anzuzeigen. Spiel das also mal komplett durch.

            Meine community ist übrigens "fertig"...

            http://community.fastix.de/

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Meinereinerselbst ist auf der Suche nach Aufträgen
          2. Also noch mal: wenn in Deinem Perl- Skript immer mal eine andere Zeile die Nr 533 ist, dann schreibst Du das mit einem anderen Skript immer neu und includierst es dann? Geht das überhaupt? Versucht Perl nicht im Unterscheid zu vielen andern Interpretern das gesamte Skript mitsamst allen Includes in einem Rutsch zu kompilieren?

            Es geht =) Ich schreibe derzeit an einer Community-Software und habe dafür ein Dutzend Module, die erst zur Laufzeit bei Bedarf mit eval() eingebunden werden. Wenn ich in einem eval-Befehl einen Fehler habe, dann ist die Zeilennummerierung auch für'n Anus.

            Ich mache auch regen gebrauch von Modulen die erst zur Laufzeit eingebunden werden, ich verwende aber require dafür und dann haste das Problem nicht mehr.

            Struppi.

  2. Hi,

    ich habe ein kleines Problem. In meinem Forumscript, welches von mir geschrieben wurde, hat sich irgendwo ein kleiner Fehler eingeschlichen (use of uninitialized value in concenation...line 513). In einem

    Warum startest du das Skript nicht mal von der Shell?

    "normalen" Perl Script wäre die Fehlersuche ja nicht schwierig, da man ja den Debugger -d benutzen kann, aber in einem CGI Script ist der Fehler nie in der Zeile des Scripts, wo die Fehlermeldung angeblich herkommt. (Die Zeile 513 und die umliegenden Zeilen beinhalten nur Text)

    Das muss nicht falsch sein.
    Es kann sein, dass der Interpreter erst in der Zeile merkt, dass du weiter oben einen Fehler hast.
    ich hab bisher nicht festgestellt, dass es da einen Unterschied zwischen CGI und Shellausfuehrung gibt..

    Es wäre ziemlich mühsam alle 1000 Codezeilen zu durchforsten nach diesem Fehler, deswegen wollte ich fragen, ob es nicht irgendwie eine Möglichkeit gibt den Fehler im CGI Script zu finden.

    use strict;
      verwendest du?

    Hast du schonmal debugging variablen eingebaut?

    Hast du eine Versionskontrolle und kannst deine Aenderungen aus der Historylog erkennen?

    Ciao,
      Wolfgang