Das sind zwei Paar unterschiedliche Schuhe, die Fehlermeldung/Warnung ist eine Meldung vom Perl-Interpreter bei der Ausfuehrung des Scripts, also ein Syntax- oder Logikfehler im gerade ausgefuehrten Code.Wenn du ein Perlscript ueber die 'system'-Funktion aufrufst dann wird ein Shellprozess gestartet (z.Bsp. '/bin/sh' unter Unix basierenden Systemen und vermutlich 'cmd.exe' unter Windows). Ueber diesen Shellprozess wird dann der eigentliche Befehl ausgefuehrt.
Ein Beispiel:
my $rueckgabewert = system("perl -le 'exit 1'");
Der Shellprozess der durch 'system' gestartet wird fuehrt den perl-Befehl aus, dieser gibt einen Exit-Code von '1' zurueck, so steht in diesen Fall in $rueckgabewert der Wert '1'.
my $rueckgabewert = system("perl -le 'exit 2'");
Hier gibt der perl-Prozess als Exit-Code '2', so steht dieser auch in $rueckgabewert.
my $rueckgabewert = system("perl -le 'die 'Fehler!'");
Der selbe Code nur beendet sich der perl-Prozess nun mit 'die', der Exit-Code ist nun (zumindest bei mir) '65280'.Wie du siehst kann sich ein Perlscript durch 'exit' mit einen eigenen Exit-Code beenden, dass heiszt jeder Programmierer kann sich letztenendes selbst festlegen welchen Exit-Code er zurueck gibt. Die Zuordnung der Exit-Codes zu Fehlermeldungen steht meistens in der Dokumentation oder im Quelltext des Programms.
Nebenbei: Es muss nicht sein dass der Rueckgabewert dem entspricht, den der gestarete Befehl zurueckgibt, der Shellprozess kann auch einen davon unabhaengigen eigenen Rueckgabewert liefern. Verlassen wuerde ich mich also darauf nicht.
Wie ich im letzten Post schon geschrieben habe kommst du an die Ausgabe des ausgefuehrten Befehls nur wenn du qx/BEFEHL/ oder die Backticks `BEFEHL` verwendest. Oder du oeffnest mit 'open' eine PIPE zum Prozess von der du dann lesen kannst (siehe perldoc perlipc).
Wenn dass nicht hilft, dann gib mal ein konkreteres Beispiel, 20 Zeilen allgemeinen Perlcode der die Problematik nachbildet.
Datum: 10.05.2007-18:04
