Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re: Restrict encoding of std streams to lexical scope

by choroba (Archbishop)
on Aug 09, 2013 at 12:33 UTC ( #1048761=note: print w/replies, xml ) Need Help??

in reply to Restrict encoding of std streams to lexical scope

Good question. The only solution I was able to think of uses the "dup" of the handles and a callback. You can add the & prototype to save yourself from typing (sub  ) every time.
#!/usr/bin/perl use warnings; use strict; use feature 'say'; sub encoding { my $code = shift; open my $STORE_STDOUT, '>&STDOUT' or die $!; binmode STDOUT, 'encoding(UTF-8)'; $code->(); open STDOUT, '>&', $STORE_STDOUT or die $!; } my $utf8 = "\x{3bc}\x{1fc6}\x{3bd}\x{3b9}\x{3bd}"; say 'A:', $utf8; encoding(sub { # Here, no warning is issued. say 'B:', $utf8; }); # End of scope, STDOUT is no longer affected. say 'C:', $utf8;
لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2022-08-16 19:05 GMT
Find Nodes?
    Voting Booth?

    No recent polls found