http://qs1969.pair.com?node_id=11136763

BillKSmith has asked for the wisdom of the Perl Monks concerning the following question:

I have written the first draft of a module which adds an encoding layer to STDOUT so non-ascii characters print correctly in a CMD window (under Windows 7) Consider the following one-liner in a CMD window.
perl -e"print qq(\xe4)"

It incorrectly displalys a greek sigma.

Now with my module

perl -MDOS::Try -e"print qq(\xe4)"

It now displays the correct character

So far so good! Now I want to automate this test. I thought that I could run this script in backtics and capture the STDOUT.

use strict; use warnings; use $result; $result = `perl -MDOS::Try -e"print qq(\xe4)"`; print $result;

This script displays the greek sigma. The module does not work in this environment.

I need help finding either a better way to test this module or a way to rewrite it which avoids the problem. The 'guts' of the module (below) consists of three statements cut and pasted from exampmles in the documentation of open (with minor edits as necessary)

package DOS::Try; use strict; use warnings; open(my $oldout, ">&STDOUT") or die "Can't dup STDOUT: $!"; close STDOUT; open(STDOUT, ">&:encoding(Cp437)", $oldout) or die "Can't dup \$oldout +: $!"; 1
Bill