Ein-/Ausgabe anderes Programm
Alinghi
- perl
Hi,
ich hab das Problem, dass ich ich gerne den Output eines Programmes hätte, diese jedoch zuvor eine "Enter" benötigt und ich jetzt nicht weiss, wie ich das gelöst bekommes.
Folgendes hab ich versucht
1.)
open(Y, "/opt/Y -refer |");
while (<Y>) {
print $1;
}
close (Y)
Problem: Ich muss das "Enter" manuell eingeben.
2.)
open(Y, "/opt/Y -refer |");
print Y "\n";
while (<Y>) {
print $1;
}
close (Y)
Problem: Ich muss das "Enter" immernoch manuell eingeben.
3.)
open(Y, "| /opt/Y -refer");
while (<Y>) {
print $1;
}
close (Y)
Problem: Das "Enter" wird zwar automatisch gegeben, jedoch ist der Output nicht in meiner Schleife, sondern wird auf STDOUT des Progeammes Y gegeben, d.h. ich kann die Daten nicht verarbeiten.
Hat jemand eine Idee?
Danke.
ciao,
Harry
Hi,
das "print $1" ist ein "print $_".
ciao,
Alinghi
open(Y, "/opt/Y -refer |");
Du öffnest eine nur lesende Pipe und kannst deshalb nichts reinschreiben, also auch kein „Enter“.
open(Y, "| /opt/Y -refer");
Du öffnest eine nur schreibende Pipe, kannst also zwar Dein „Enter“ schreiben, die Ausgabe des Programmes landet aber in STDOUT (Konsole oder wo auch immer).
Hat jemand eine Idee?
Schau Dir mal perlipc und dazu das Modul IPC::Open2 an. Das Problem ist nämlich, dass Du mit dem pipe-Symbol nur entweder lesend oder schreibend auf einen Prozess zugreifen kannst, Du brauchst aber beide Richtungen.
Siechfred
Hi,
hab es jetzt mir Unixmitteln gelöst, da mir das andere doch
etwas zu kompliziert ist ...
open(Y, "/opt/Y -refer << "\n" |");
thx
ciao,
Alinghi