User since
2005-03-20
23
Artikel
BenutzerIn
Hi!
Ich Starte mit dem Systembefehl ein Dos-Programm
Das Programm setzt die Systemvariable %errorlevel%; sozusagen der Returcode des Dos-Programms.
Wie komme ich nun aus Perl an diese Systemvariable? Ok, ich könnte sie in eine Textdatei umleiten. Geht da auch ohne diesen Weg?
Viele Grüße
Ingo
User since
2005-03-20
23
Artikel
BenutzerIn
[quote=esskar,19.Jan..2006, 14:34]
my $errorlevel = system("programm.exe");
[/quote]
Oh, so einfach?
Ich probier es gleich mal!
User since
2003-08-04
5871
Artikel
ModeratorIn
Generell landen Umgebungsvariablen in %ENV. Allerdings die, die beim Start des Perlprogramms vorhanden sind. Wenn ein externes Programm noch Umgebungsvariablen setzt, dürfte man an die schwerlich drankommen (außer in dem oben genannten Spezialfall des Returncodes).
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2005-03-20
23
Artikel
BenutzerIn
Ja, scheint zu klappen. Vielen Dank, das hat mir sehr geholfen!
Wenn der Prozess korrekt gelaufen ist, bekomme ich eine 0. Aber Anstatt Returncode 8 bekomme ich 2048.
Hast du da noch einen Hinweis?
Viele Grüße
Ingo
User since
2005-03-20
23
Artikel
BenutzerIn
[quote=braunbaer,19.Jan..2006, 14:59]Ja, scheint zu klappen. Vielen Dank, das hat mir sehr geholfen!
Wenn der Prozess korrekt gelaufen ist, bekomme ich eine 0. Aber Anstatt Returncode 8 bekomme ich 2048.
Hast du da noch einen Hinweis?
Viele Grüße
Ingo[/quote]
Ah, ich habs grad selber in einem Buch gefunden:
"Nach der traditionellen Semantik erhalten Sie den eigentlichen Exit-Wert indem Sie den Wert durch 256 teilen oder um 8 Bit nach rechts schieben"
Quelle: Programmieren mit Perl, Deutsche Ausgabe der 3. Auflage, Seite 835.
Super, vielen Dank!
1000 Küsse,
Ingo
User since
2003-08-04
5871
Artikel
ModeratorIn
siehe perldoc -f system ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-04
7321
Artikel
ModeratorIn
[quote=Crian,19.01.2006, 14:43]Generell landen Umgebungsvariablen in %ENV. Allerdings die, die beim Start des Perlprogramms vorhanden sind. Wenn ein externes Programm noch Umgebungsvariablen setzt, dürfte man an die schwerlich drankommen (außer in dem oben genannten Spezialfall des Returncodes).[/quote]
stimmt schon.
der returncode eines programms wird in der cmd in der umgebungsvariable ERRORLEVEL abgelegt, damit man ihn von dort auch auslesen kann!
User since
2003-08-04
5871
Artikel
ModeratorIn
Aber doch nicht, wenn man das Programm von Perl aus (in einer neuen Shell) startet?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite