|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Programm mit Perl Steuern
|
Seitenanfang |
Hallo, ich bin mir nicht sicher, nach was ich suchen könnte bei meinem Problem, denn ich weiß nicht wie man es nennt.Mein Problem ist folgendermaßen. Ich habe ein Programm dass nach dem Start verschiedene Parameter abfragt. Ich habe mir die ganze zeit ein kleines bashscript geschrieben was ich dann mit system ausführe, aber das ist irgendwie keine sehr saubere lösung, desswegen wollte ich mal fragen, wie ich da vorgehen kann dass mit einer reinen perllösung zu machen. hier ein beispiel #!/bin/csh -f echo "--- TEST --- " /apps/prod/programmname <<EOF euler test EOF wobei euler und test die parameter sind die das c programm nacheinander abfragt... kann mir da jemand helfen? habe schon mit system versucht das programm aufzurufen und dann einfach eine variable zu übergeben, die die argumente mit \n getrennt enthält, aber das klappt nicht. wäre für ideen sehr dankbar...
Datum: 02.04.2007-11:30

|
re: Programm mit Perl Steuern
|
Seitenanfang |
Du könntest mit open und ner Pipe arbeiten.open my $fh, "| programm "; print $fh euler,"\n",test,"\n"; close $fh;
Datum: 02.04.2007-15:46

|
re: Programm mit Perl Steuern
|
Seitenanfang |
| danke, dass hat mir geholfen.
Datum: 02.04.2007-20:44

|
re: Programm mit Perl Steuern
|
Seitenanfang |
| Also ich will mich nochmal für die Antwort bedanken, hat mir bis jetzt gute Hilfe geleistet. Ärgere mich jedoch jetzt mit einem neuen Problem rum. Ich versuche jetzt die Ausgabe von einem solchen Programm aufzufangen. Im Moment schreibe ich mit perl ein Shellscript das ich anschließend mit qx() ausführe und so die Ausgabe in eine Datei schreibe. Hat hier vielleicht jemand eine Idee wie ich das vereinfachen kann?
Datum: 14.05.2007-09:51

|
re: Programm mit Perl Steuern
|
Seitenanfang |
Ist das gleiche Prinzip
# lesende PIPE open(INPIPE, 'befehl |') or die $!; my $daten = <INPIPE>;# schreibende PIPE open(OUTPIPE, '| befehl') or die $!; print OUTPIPE "daten\n";
Auf diesen Weg kannst du aber KEINE PIPE in beide Richtungen oeffnen, also gleichzeitig Lesen und Schreiben vom/zum Prozess ist so nicht moeglich
# lesende und schreibende PIPE open(PIPE, '| befehl |') or die $!; # FALSCH!
Dafuer gibt es aber auch eine Loesung, ein Modul namens IPC::Open2 (Eingabe-, Ausgabekanal) und das Modul IPC::Open3 (Eingabe-, Ausgabe- und Fehlerkanal).Die perldoc perlipc behandelt dieses Thema.
Datum: 14.05.2007-12:53

|
|

|

|

|
 |

|

|
|