Hi
ich versuche mittels Perl ein Programm in mehreren Unterordner auszuführen.
"startAll_em.pl" läuft eine Ordnerebene über den eigentlichen Dateien und ruft für jeden Unterordner "start_em.pl" auf.
Das gelingt auch prinzipiell aber leider schreibt das Programm das von start_em.pl ausgeführt wird einige Dinge per default in das Ausführungsverzeichnis (also eine Ordnerebene höher wo sie nicht hin sollen). Ich befinde mich also im untrigen Verzeichnis und möchte für alle Unterordner ein commando Absetzen das in den jeweiligen Verzeichnissen ausgeführt wird:
% ll
drwx------ 3 x acadrel 4096 19. Apr 10:56 1A/
drwx------ 2 x acadrel 4096 18. Apr 17:55 1B/
drwx------ 2 x acadrel 4096 18. Apr 17:58 1C/
...
-rwx------ 1 x acadrel 1354 19. Apr 11:03 startAll_em.pl
-rwx------ 1 x acadrel 2852 19. Apr 10:31 start_em.pl
jetzt funktioniert das zwar mittles des Angebens der input Dateien mit ./1A/input.txt und output mit ./1A/ouput.txt aber leider schreibt das Programm dann (logischerweise) im ouput die Pfade zu anderen Dateien ebenfalls mit ./1A/ was dann sobald ich mich wirklich im Verzeichnis 1A befinde um die Datei weiterzuverwenden nicht mehr funktioniert ...
Ich hätte versucht mich im Perlskript mit "cd" ins Verzeichnis zu bewegen damit das Ausführungsverzeichnis gleich dem Datenverzeichnis ist. Also quasi
system "cd 1A"
../start_em.pl
aber das nimmt er nicht:
"Can't exec "cd": No such file or directory at ./startAll_em.pl line 38."
Alternativ hätte ich versucht automatisch eine Kopie von "start_em.pl" in alle Verzeichnisse zu kopieren und von startAll_em.pl dort aufrufen zu lassen also quasi ./1A/start_em.pl. Dabei ist aber das Ausführungsverzeichnis leider auch nicht in 1A sondern darüber weil ja die ursprünglich ausgeführte Datei "startAll_em.pl" ist ...
Weiß da jemand eine Lösung wie ich mein aktuelles Ausführungsverzeichnis in Perl+Fedora wechseln kann?
lg
Lordy
Last edited: 2013-04-19 12:26:10 +0200 (CEST)