Ich habe ein Kommandozeilen-Dienstprogramm von einer dritten Partei (es ist groß und in Java geschrieben), die ich verwendet habe, um mir einige Daten zu verarbeiten. Dieses Dienstprogramm erwartet Informationen in einer Datei mit Zeilenbegrenzung und gibt dann verarbeitete Daten an STDOUT aus.Gibt es eine Möglichkeit, Daten von Perl zu einem Unix Command Line Utility zu leiten
In meinen Testphasen ging es mir gut, etwas Perl zu schreiben, um eine Datei voller Informationen zu erstellen und diese Datei an dieses Drittanbieter-Dienstprogramm zu senden, aber als ich diesen Code in Produktion bringe, würde ich würde es wirklich bevorzugen, Daten direkt an dieses Dienstprogramm zu leiten, anstatt zuerst diese Daten in eine Datei zu schreiben, da dies mir den Aufwand ersparen würde, nicht benötigte Informationen auf die Festplatte zu schreiben. Ich habe vor kurzem in diesem Board gefragt, wie ich das unter Unix machen könnte, habe aber inzwischen erkannt, dass es unglaublich praktisch wäre, es direkt aus einem Perl-Modul heraus zu starten. Vielleicht so etwas wie:
system(bin/someapp do-action --option1 some_value --input $piped_in_data)
Derzeit ich das Dienstprogramm rufen Sie wie folgt vor:
bin/someapp do-action --option1 some_value --input some_file
Im Grunde, was ich will, ist meine Daten alle entweder auf eine Variable zu schreiben oder zu STDOUT und dann um es über einen Systemaufruf im SAME Perl-Skript oder -Modul an die Java-App zu leiten. Das würde meinen Code flüssiger machen. Ohne sie würde ich ein Perl-Skript schreiben müssen, das eine Bash-Datei auf halbem Wege aufruft, die wiederum ein anderes Perl-Skript aufrufen müsste, um die Daten vorzubereiten. Wenn es mir möglich wäre, würde ich liebend gerne den ganzen Weg in Perl bleiben. Irgendwelche Ideen?
Akzeptiert das Tool Daten auf STDIN? – thejh