Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: print in CMD window

by pryrt (Abbot)
on Sep 14, 2021 at 20:22 UTC ( [id://11136764]=note: print w/replies, xml ) Need Help??


in reply to print in CMD window

You don't need to close the old STDOUT and create a new one with the CP437 encoding; you can just binmode the existing STDOUT:
C:\Users\peter.jones\Downloads\TempData\perl>perl -Ilib -e"print qq(\xe4)"
Σ
C:\Users\peter.jones\Downloads\TempData\perl>perl -Ilib -MDOS::Try -e"print qq(\xe4)"
ä

vs

C:\Users\peter.jones\Downloads\TempData\perl>perl -e"print qq(\xe4)"
Σ
C:\Users\peter.jones\Downloads\TempData\perl>perl -e"binmode STDOUT, ':encoding(Cp437)'; print qq(\xe4)"
ä

And the reason your example doesn't work in your test is the same reason that you wrote the module: you need to have the right encoding on the output of your test script as well as the code of the `...`.

#!perl

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

use lib 'lib';
require DOS::Try;
print "second test: $result\n";
__END__
first test: Σ
second test: ä

You can see more if you hex dump the bytes being output from the two variants of the oneliner:

C:\Users\peter.jones\Downloads\TempData\perl>perl -e"print qq(\xe4)" | perl -e "print unpack 'H*',$_ for <>"
e4
C:\Users\peter.jones\Downloads\TempData\perl>perl -e"binmode STDOUT, ':encoding(Cp437)'; print qq(\xe4)" | perl -e "print unpack 'H*',$_ for <>"
84

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11136764]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2024-03-29 06:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found