Perl에서 백 티크에서 출력을 플러시하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/758611

  •  09-09-2019
  •  | 
  •  

문제

이 perl 앱이있는 경우 :

print `someshellscript.sh`;

그 물건은 많은 것을 인쇄하고 완료하는 데 오랜 시간이 걸립니다. 쉘 스크립트 실행 중간에 해당 출력을 어떻게 인쇄 할 수 있습니까?

Perl이 someshellscript.sh 결과 만 인쇄하는 것처럼 보입니다. 완료되면 실행 중간에 출력을 플러시 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

아마도 당신이하고 싶은 것은 다음과 같은 것입니다.

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

이것은 실행됩니다 someshellscript.sh 출력을 읽는 파이프를 엽니 다. 그만큼 while 루프는 스크립트에 의해 생성 된 각 출력 라인을 읽고 인쇄합니다. 참조 열려 있는 자세한 내용은 문서 페이지.

다른 팁

여기서 문제는 백틱으로 탈출하면 스크립트를 문자열에 저장 한 다음 인쇄한다는 것입니다. 이러한 이유로 인쇄로 "플러시"하는 방법이 없을 것입니다.

System () 명령을 사용하면 출력을 지속적으로 인쇄해야하지만 출력을 캡처 할 수는 없습니다.

system "someshellscript.sh";
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top