Question

Si j'ai cette application perl:

print `someshellscript.sh`;

qui imprime tas de choses et prend beaucoup de temps pour terminer, comment puis-je imprimer cette sortie au milieu de l'exécution du script shell?

On dirait Perl n'imprimera le résultat de someshellscript.sh quand il est terminé, est-il un moyen de faire affleurant de sortie au milieu de l'exécution?

Était-ce utile?

La solution

Qu'est-ce que vous voulez sans doute faire est quelque chose comme ceci:

open(F, "someshellscript.sh|");
while (<F>) {
    print;
}
close(F);

Cela va someshellscript.sh et ouvre un tuyau qui lit sa sortie. La boucle de while lit chaque ligne de sortie généré par le script et l'imprime. Voir la ouvrir la page de documentation pour plus d'informations.

Autres conseils

Le problème est ici que s'échapper avec votre script stocke les apostrophes inverses à une chaîne, que vous pouvez ensuite imprimer. Pour cette raison, il n'y aurait aucun moyen de « flush » avec impression.

La commande système () doit imprimer sortie en continu, mais vous ne serez pas en mesure de capturer la sortie:

system "someshellscript.sh";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top