system('chcp 65001 2>nul 1>nul')
which is short for
system(cmd => ( '/c' => 'chcp 65001 2>nul 1>nul' ) )
If you want to avoid calling the shell, you need the following:
open(my $fh, '>', 'nul') or die "open nul: $!\n";
my $pid = open3(
undef, # Use parent's STDIN
'>&'.fileno($fh), # STDOUT = nul
undef, # STDERR = STDOUT
chcp => 65001,
);
waitpid($pid, 0);
Now, system is buggy on Windows, so your code might actually function as you intend it to. But if it does, you're relying on a bug in Perl.
|