How can I suppress STDOUT temporarily in a Perl program?

filehandle, perl

Solution

My own answer:

use IO::Null;

print "does print.";

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

print "does not print.";

select($oldfh);

print "does print.";

Problem

Is there any easy way to tell perl "now ignore everything that is printed"? I have to call a procedure in an external Perl module, but the procedure prints a lot of unnecessary information (all through standard print). I know select can be used to redirect it somehow, but I am not too wise from reading perldoc on it. edit: I found the answer sooner, but I will add an example to make it clearer (but not much I guess) ``` 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 and TectoMT::Document are those external modules

Original source