2016-09-23 4 views
2

본인은 아래와 같이 ssh를 통해 펄 스크립트를 실행하고 있습니다 :디스플레이 출력

는 a.pl의 내용은 아래
[[email protected] ~]$ ssh [email protected]_001 'perl /home/dipuh/a.pl' 

입니다 : 여기

print "Sleeping \n"; 
sleep(60); 
print "Waking Up"; 

내 로컬 터미널은 perl 스크립트가 완전히 실행될 때까지 기다렸다가 완료되면 완료 출력을 표시합니다. 초기 "Sleeping"텍스트는 최종 출력물에만 인쇄됩니다.

내 로컬 터미널에 모든 방법이 있습니까? 전체 perl 스크립트가 완료 될 때까지 기다리는 대신 런타임시 perl 스크립트에 각 명령의 출력을 표시 할 수 있습니다.

답변

2

자동 플러시 모드를 켜십시오. 그것에 구식 방법은 스크립트의 맨 위에 다음을 추가하는 것입니다 :

$| = 1; 

하거나 더 현대적인 방법으로 작업을 수행 할 수 있습니다 또는

use IO::Handle; 

STDOUT->autoflush(1); 

, 당신은 STDOUT를 세척 할 수 있습니다 주문형 :

use IO::Handle; 

print "Sleeping \n"; 
STDOUT->flush; 
sleep(60); 
print "Waking Up"; 
STDOUT->flush; 
4

귀하는 suffering from buffering입니다.

블록에 대해 $| ~ 1 중 하나를 설정할 수 있습니다.

{ 
    local $| = 1; 
    print "Sleeping \n"; 
    sleep(60); 
    print "Waking Up"; 
} 

또는 처리 :: IO를 사용

use IO::Handle; 
STDOUT->autoflush(1); 
관련 문제