debugger- fehlermeldungsausgabe? Perl Win- Unix Portieren?
Hannes
- perl
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
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
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
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
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
Danke Euch beiden.
Klappt prima.
ich muss leider gleich noch ein Problem Posten :-)
Hannes