是否可以使用Curses,打印到STDERR而不是STDOUT?

时间:2012-03-20 16:09:48

标签: perl stderr curses

如何打印“Hello,World!\ n”(使用Curses)到STDERR而不是STDOUT

#!/usr/bin/env perl
use warnings;
use 5.12.0;
use Curses;

initscr();

addstr( 10, 0, "Hello, World!\n" );
refresh();

sleep 3;
endwin();

1 个答案:

答案 0 :(得分:1)

从未使用过诅咒,但假设它是initscr的参数,我做了man initscr,它给了:

输出到多个终端的程序应该为每个终端使用newterm例程而不是initscr。 [...]

所以你会得到类似的东西:

#!/usr/bin/env perl
use strict;
use warnings;
use Curses;

open(my $stderr_term_in, '<', '/dev/null') or die $!;

my $stdout_scr = newterm($ENV{TERM}, \*STDOUT, \*STDIN);
my $stderr_scr = newterm($ENV{TERM}, \*STDERR, $stderr_term_in);

set_term($stdout_scr);
addstr(10, 0, "Hello, STDOUT!\n");
refresh();

set_term($stderr_scr);
addstr(10, 0, "Hello, STDERR!\n");
refresh();

set_term($stdout_scr);
endwin();
delscreen($stdout_scr);

set_term($stderr_scr);
endwin();
delscreen($stderr_scr);