nebenbei: bei system immer abfragen, ob alles klar gegangen ist, siehe <!--perldoc_f1--><a href="
http://faq.perl-community.de/bin/view/Perldoc/perl..." target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--perldoc_f2-->-f system<!--perldoc_f3--></a><!--perldoc_f4-->
Bei einem Kunden gab es mal das Problem, dass Daten von System A ins System B synchronisiert wurden. Irgendwann dann kam mal ich und bekam den Auftrag, Daten in System A zu aktualisieren, was auch klappte. Nur in System B kamen die nie an. Eine Skriptanalyse brachte folgendes zum Vorschein:
x) der Entwickler verwendete fuer den Export aus System A ein externes Programm, das nicht vorhanden war. Es hat offenbar einen Serverumzug nicht mitgemacht.
x) Dieses externe Programm schrieb die Daten in eine Datei, die den Serverumzug mitgemacht hat, da sie im selben Verzeichnis wie das Script lag.
Dies fiel einige Monate lang nicht auf, weil der Entwickler vergessen hatte zu ueberpruefen, ob das externe Kommando korrekt ausgefuehrt werden konnte, weil er sich einfach darauf verliess, dass die Datei eingelesen werden konnte. Aber er hat die Datei zu Programmstart nicht geloescht, also war sie immer da, und monatelang wurden die Daten in System B nicht aktualisiert. Und da es sich um Faxnummern handelte, konnten eine Menge Faxe nicht zugestellt werden.
Wenn du das externe Kommando haeufiger aufrufst, dauert es, wenn du das kommando als string mitgibst, eventuell unnoetig lange, weil vor dem aufruf noch die shell aufgerufen wird, um das kommando zu interpretieren. wenn du system mit einer liste aufrufst, kannst du dies meist vermeiden:
my @callParameters = (
'c:\xyz\blastall.exe', # absoluter pfad !
-i => 'temp.fasta',
-d => $Optionen{'pdbaaZiel'},
-p => blastp,
-o => 'C:\Perl\blast\Sequenze' .$parseparameter->{'acc'} .'.blastp'; );
my $rc = system( @callParameters );
if( $rc != 0 ) { # fehler }
siehe <!--perldoc_f1--><a href="
http://faq.perl-community.de/bin/view/Perldoc/perl..." target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--perldoc_f2-->-f system<!--perldoc_f3--></a><!--perldoc_f4--> fuer weitere Infos