2012-02-11 8 views
2

太字のhi!STDERRに印刷したいと思います。 Term::Screenで可能ですか?Term :: ScreenでSTDERRに印刷するにはどうすればよいですか?

#!/usr/bin/env perl 
use warnings; 
use 5.12.0; 
use utf8; 
binmode STDOUT, ':utf8'; 
binmode STDERR, ':utf8'; 
use Term::Screen; 

my $scr = new Term::Screen; 
unless ($scr) { die " Something's wrong \n"; } 
$scr->clrscr(); 
$scr->at(5,10)->bold()->puts("hi!")->normal(); 
$scr->at(11,0); 
+0

$this->term()->Tgoto('cm', $c, $r, *STDOUT);

そのため、明示的にSTDERRにSTDOUTのすべてをリダイレクトする必要があります:あなたが呼び出しているsub at{}は、ソースには、これを持っています?私はあなたがそれで何をしたいと思うか見て苦労しています。 – Mat

+0

私は 'IO :: Interactive'ドキュメンテーションからこれをやりたいと思います:"対話型の書き込み可能なファイルハンドルを渡すこともできます。この場合、ファイルハンドルが端末に接続されていればそのファイルハンドルに書き込みます(writinbgの代わりに* STDOUT)。もう一度、通常の容疑者は* STDERRです: " –

答えて

4

ターム::スクリーン、そのソースを見て、例えば*STDOUT

に書き込むようにハードコーディングされていますあなたはそれがために有用であろうものを説明してもらえ

open(my $backup_stdout, ">&STDOUT"); 
close(STDOUT); 
open(STDOUT, ">&STDERR"); # This affects ALL of spawned child processes! 
# *STDOUT = *STDERR; # This does the same but ONLY affects your process 
関連する問題