2016-09-23 17 views
2

ディスプレイ出力

[[email protected] ~]$ ssh [email protected]_001 'perl /home/dipuh/a.pl' 

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); 
関連する問題