use feature "switch";
# Redirect STDERR
open my $err_fh, '>', 'stderr.log';
*STDERR = $err_fh;
# Redirect STDERR
open my $out_fh, '>', 'stdout.log';
*STDOUT = $out_fh;
my $i;
given($i) {
print "$i\n" when $i < 4;
}
# Prove STDERR is redirected
my $error = 10 / 0;
Illegal division by zero at test.pl line 15. is the only thing that is written to STDERR and 3 gets written to STDOUT but the following still gets displayed on the command prompt:
C:\Users\ian\Perl>perl test.pl
given is experimental at test.pl line 10.
when is experimental at test.pl line 11.
C:\Users\ian\Perl>
So I am not really sure what is going on with output streams as the warnings are on neither STDERR nor STDOUT.
This is using Perl v5.28.1
|