Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7636[/thread]

systemvariablen aus DOS auslesen



<< >> 9 Einträge, 1 Seite
braunbaer
 2006-01-19 15:02
#62073 #62073
User since
2005-03-20
23 Artikel
BenutzerIn
[default_avatar]
Hi!

Ich Starte mit dem Systembefehl ein Dos-Programm

Code: (dl )
system("programm.exe");


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
esskar
 2006-01-19 15:34
#62074 #62074
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
my $errorlevel = system("programm.exe");
braunbaer
 2006-01-19 15:41
#62075 #62075
User since
2005-03-20
23 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,19.Jan..2006, 14:34]
Code: (dl )
my $errorlevel = system("programm.exe");
[/quote]
Oh, so einfach?

Ich probier es gleich mal!
Crian
 2006-01-19 15:43
#62076 #62076
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
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
braunbaer
 2006-01-19 15:59
#62077 #62077
User since
2005-03-20
23 Artikel
BenutzerIn
[default_avatar]
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
braunbaer
 2006-01-19 16:03
#62078 #62078
User since
2005-03-20
23 Artikel
BenutzerIn
[default_avatar]
[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
Crian
 2006-01-19 16:46
#62079 #62079
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
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
esskar
 2006-01-19 17:38
#62080 #62080
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[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!
Crian
 2006-01-20 12:45
#62081 #62081
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
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
<< >> 9 Einträge, 1 Seite



View all threads created 2006-01-19 15:02.