Como liberar a saída em backticks em Perl?
Pergunta
Se eu tenho este app perl:
print `someshellscript.sh`;
que imprime monte de coisas e leva muito tempo para ser concluído, como posso imprimir essa saída no meio da execução do script shell?
Looks como Perl só irá imprimir o resultado someshellscript.sh quando ela for concluída, existe uma maneira de fazer corar de saída no meio da execução?
Solução
O que você provavelmente quer fazer é algo como isto:
open(F, "someshellscript.sh|");
while (<F>) {
print;
}
close(F);
Este é executado someshellscript.sh
e abre um tubo que lê sua saída. O loop while
lê cada linha de saída gerado pelo script e imprime-lo. Veja a href="http://perldoc.perl.org/functions/open.html" página de documentação aberta para obter mais informações.
Outras dicas
O problema aqui é que escapar com acentos graves armazena seu script a uma corda, que você, em seguida, imprimir. Por esta razão, não haveria maneira de "lavar" com impressão.
Usando o comando () sistema deve imprimir a saída de forma contínua, mas você não será capaz de capturar a saída:
system "someshellscript.sh";