my $stdout_and_stderr1; my $stdout_and_stderr2; my $stdout_and_stderr3; { print "running script1.pl\n"; local *STDOUT; close(STDOUT); open(STDOUT, '>', \$stdout_and_stderr1) or die("..."); local *STDERR; close(STDERR); open(STDERR, '>&STDOUT') or die("..."); do 'script1.pl'; } { print "running script2.pl\n"; ...