my $module = MyModule->new() ; ... my $out = '' ; { local *STDOUT ; local *STDERR ; open (STDOUT,">>", \$out) ; open (STDERR,">>", \$out) ; $module->process() ; } .... #### use IPC::Open2 ; .... sub process { .. my $pid = open2( *Reader, *Writer, "some_prog" ); print Writer "$some_options" ; my @prog_out = ; close Writer; close Reader; .. return @output ; } #### print STDOUT "....." ; #### open OUT,">>", \$out ; select OUT; $| = 1 ;