in reply to Redirecting STDOUT and standard error to file

IO::Tee will do what you want. It's a little tricky to "cast" (C-speak) an IO::Tee object to a global handle, but this will do it. Perl 5.8x with PerlIO.

my $exitcode = do { use IO::Tee; open my $ef, '>>', '/path/to/stderr.txt' or die $!; open my $of, '>>', '/path/to/stdout.txt' or die $!; local *STDERR = *{IO::Tee->new('> /dev/tty', $ef)}; local *STDOUT = *{IO::Tee->new('> /dev/tty', $of)}; warn scalar localtime; print scalar(localtime), "\n"; warn 'Here I am!'; print "Here, too!\n"; system '/loc/of/perl', '/path/to/sample1.pl'; };

As with any localized global variable, subroutines called from the local scope will honor the local value.

After Compline,
Zaxo