首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Term::Screen打印到STDERR?

如何使用Term::Screen打印到STDERR?
EN

Stack Overflow用户
提问于 2012-02-11 16:16:31
回答 1查看 208关注 0票数 2

我想在这里将粗体hi!打印到STDERR。使用Term::Screen可以做到吗?

代码语言:javascript
复制
#!/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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-11 20:55:09

Screen,查看其源代码,是硬编码的,不能写入*STDOUT

例如,您正在调用的sub at{}在源代码中具有以下内容:

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

因此,您需要显式地将所有STDOUT重定向到STDERR:

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9238801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档