perl - 如何在 Perl 程序中暂时抑制 STDOUT?

标签 perl filehandle

有什么简单的方法可以告诉 perl“现在忽略打印的所有内容”?

我必须在外部 Perl 模块中调用一个过程,但是该过程会打印很多不必要的信息(全部通过标准打印)。

我知道 select 可以用来以某种方式重定向它,但我在阅读 perldoc 时不太明智。

编辑 :我很快找到了答案,但我会添加一个示例以使其更清楚(但我猜并不多)

use TectoMT::Scenario;
use TectoMT::Document;

sub tagDocuments {
    my @documents = @_;

    my $scenario = TectoMT::Scenario->new({'blocks'=> [ qw(
            SCzechW_to_SCzechM::Sentence_segmentation 
            SCzechW_to_SCzechM::Tokenize  
            SCzechW_to_SCzechM::TagHajic
            SCzechM_to_SCzechN::Czech_named_ent_SVM_recognizer) ]});

    $scenario->apply_on_tmt_documents(@documents);
    return @documents;
}

TectoMT::Scenario 和 TectoMT::Document 是那些外部模块

最佳答案

我自己的回答:

use IO::Null;

print "does print.";

my $null = IO::Null;
my $oldfh = select($null); 

print "does not print.";

select($oldfh);

print "does print.";

关于perl - 如何在 Perl 程序中暂时抑制 STDOUT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1376607/

相关文章:

perl - 如何测试是否可以写入文件句柄?

perl - Perl 变量声明的正确方法

php - 是否有用于生成迁移 SQL (postgres) 文件的脚本?

perl - 在 shell 命令中插入 perl 变量

perl - STDOUT 是什么类型,我如何选择写入它?

vb6 - CreateFile 返回负句柄

perl - 为什么这个关于 strict subs 的错误只会在 autodie 下触发?

MacOS 10.12.6 安装 Perl 模块 WWW:Curl::Availability.h 中出现简单错误

c++ - C++ 中的文件句柄(Perl 中的 __DATA__)

swift - 到 FileHandle 指针的索引距离和 Swift 4 中的字符编码