Da alle Datenströme in Perl gepuffert sind, solltest Du immer wenn die Daten garantiert auf die Pipe geschrieben werden sollen (also zum Beispiel immer wenn Du einen Zeilenumbruch gesendet hast und auf eine Reaktion des Programmes wartest), die Ausgabe flushen.
Ist das kontrollierte Programm komplizierter (weil es zum Beispiel eine richtige Benutzerführung aufweist und nicht nur einen Datenstromfilter darstellt), bietet es sich wahrscheinlich an, das Modul
Expect zu verwenden.
When C++ is your hammer, every problem looks like your thumb.