Hannes: debugger- fehlermeldungsausgabe? Perl Win- Unix Portieren?

Hallo, ich habe 2 Problemchen:

1. ein recht Umfangreiches Skript läuft zwar unter WinNT auf meinem alten Server, aber nicht unter Unix auf meinem neuen. Welche Feinheiten unterscheidet diese? Gibt es kleine Tricks, auf die man achten muss?

2. ich wollte aus erstgenanntem Grund dem Script nochmal auf den Grund gehen, so daß auch kleine Ungereimtheiten die der compiler akzeptiert hat, aus dem weg geraeumt sind. bei eingabe von

perl -cw meinscript.plx

in der eingabeaufforderung (WinNT) gibt er tausend kleine meldungen (warnungen raus, die ich gar nicht alle durchlesen kann (bei 40 Zeilen MS-DOS Eingabeauff.)
Gibt es eine möglichkeit diesen Text zu speichern?

Gibt es elegantere Möglichkeiten an die Fehler heranzukommen?

Für Eure hilfe dankt

Hannes

  1. hi,

    zu 1.
    ja es gibt einige beachtenswerte Unterschiede z.B.
    -Zugriffsrechte
    -Driveletters
    -Systembefehle
    ... kommt drauf an.

    zu 2.

    perl -cw meinscript.plx

    in der eingabeaufforderung (WinNT) gibt er tausend kleine meldungen (warnungen raus, die ich gar nicht alle durchlesen kann (bei 40 Zeilen MS-DOS Eingabeauff.)
    Gibt es eine möglichkeit diesen Text zu speichern?

    Gibt es elegantere Möglichkeiten an die Fehler heranzukommen?

    perl -cw meinscript.plx > datei
    perl -w script | more

    oder ruf's im Textpad auf, guck mal auf meine HP unter
    PERL Entwicklungsumgebung... im Textpad kannst du dann
    in aller Ruhe scrollen.

    Rolf

    1. Hi hi!

      Gibt es elegantere Möglichkeiten an die Fehler heranzukommen?

      Da fallen mir auf Anhieb zwei ein, zumindest unter Windows NT (nicht Win9x!). Einen hat Rolf schon angedeutet, nur falsch ausgefuehrt (dazu unten), der andere ist, einfach Deine Konsole so einzustellen, dass sie Dir eine Zeilenanzahl zeigt, mit der man auch arbeiten kann. Dazu in die Systemsteuerung, dort Console (heisst vermutlich Eingabeaufforderung in der dt. Version) aufmachen, dort bei Layout die Window size und Screen buffer size einstellen (Begriffe bitte jeweils in die Sprache Deiner Win-Version uebersetzen). Ich habe z.B. bei Window size 40 Zeilen eingetragen (so gross ist dann das Fenster), bei Screen buffer size aber 800 Zeilen (soviel wird gespeichert), mit dem Effekt, dass ich VIEL scrollen kann. :-)

      Man kann dort uebrigens auch Farben einstellen, die im Auge nicht ganz so weh tun, z.B. mit weisser Schrift (statt grau). ;-)

      perl -cw meinscript.plx > datei
      perl -w script | more

      (Ob folgendes auch fuer Win9x gilt, weiss ich nicht, vermutlich aber nicht.)
      Der Ansatz ist richtig, aber so stimmt das nicht. Die Ausgabe eines Consolenprogramms teilt sich in zwei verschiedene Kanaele, naemlich STDOUT und STDERR. Ersteres ist fuer normale Ausgaben des Programms gedacht, zweiteres fuer Warnungen und Fehlermeldungen. Dieses aus der Unixwelt stammende Konzept wird von Perl konsequent umgesetzt, und - zum Glueck - von NT unterstuetzt.

      Normalerweise sind STDOUT und STDERR auf die Konsole gerichtet (dieses unbunte Fenster). Mit den Ausgabeumlenkungsoperatoren kann man die aber wo anders hinrichten. Dabei bedeutet
        1> output.txt     STDOUT nach output.txt umleiten, evtl. existierende Datei ueberschreiben
        2> errors.txt     STDERR nach errors.txt umleiten, evtl. existierende Datei ueberschreiben
        > output.txt      gleichbedeutend mit 1>
        1>>, 2>>          wie 1> und 2>, aber bei existierender Datei nicht ueberschreiben, sondern anhaengen
        >>                wie 1>>
        < input.txt       Eingabe (STDIN) aus der Datei input.txt holen statt von der Tastatur
        |                 STDOUT eines Programms als STDIN fuer zweites Programm verwenden

      Rolf, folgendes war bei Dir falsch: Mit
        perl -cw meinscript.plx > datei
      leitest Du STDOUT in die Datei um, nicht aber die Fehlermeldungen, die Perl auf STDERR ausgibt und deswegen weiterhin in der Konsole erscheinen. Richtig waere
        perl -cw meinscript.plx 2> errors.txt

      Bei
        perl -w script | more
      begehst Du denselben Fehler: Nur STDOUT wird an more weitergeleitet, nicht STDERR. Deshalb werden die Fehlermeldungen *nicht* seitenweise angezeigt.

      Allgemein laesst sich sagen, ein bisschen Wissen ueber seine grundlegenden Werkzeuge des Betriebssystems ist immer wieder enorm hilfreich. Leider wird in der heutigen Zeit immer alles moeglichst bunt gemacht und vor dem User versteckt, weshalb jemand, der noch nie mit Unix oder frueher mit MS-DOS gearbeitet hat, sowas einfach nicht mehr lernt.

      So long

      1. Hi Roland,

        dass das mit 1> , 2> auch unter NT geht wusste ich noch nicht... das klappt ja prima, danke für dein Posting.

        Und hier hab ich noch was für die knallharten KommandozeilenFreaks:

        mode 75,200

        gleich im aktuellen Fenster eintippen - macht in der aktuellen Sitzung das Fenster schön lang zum scrollen :)

        allg.: mode spalten,zeilen

        http://i-netlab.de/windos/windos.htm

        DOS Prompt forever - für jung + alt ;-)

        Gruß, Rolf

        1. Und hier hab ich noch was für die knallharten KommandozeilenFreaks:

          mode 75,200

          gleich im aktuellen Fenster eintippen - macht in der aktuellen Sitzung das Fenster schön lang zum scrollen :)

          Klasse Tips, Danke!

          Hannes

  2. Danke Euch beiden.

    Klappt prima.

    ich muss leider gleich noch ein Problem Posten :-)

    Hannes