use Capture::Tiny qw[ capture ];
my ( $out, $err ) =
eval { capture { print STDERR "hello\n"; print STDOUT "there\n"; die("foo\n" ) } };
print STDERR "STDERR:\nout=$out\nerr=$err\n\$@=$@";
print STDOUT "STDOUT:\nout=$out\nerr=$err\n\$@=$@";
open FILE, '>ttt.log' or die( "error opening logfile\n" );
print FILE "FILE:\nout=$out\nerr=$err\n\$@=$@\n";
close FILE;