Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re: Restrict encoding of std streams to lexical scope

by choroba (Bishop)
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
Node Status?
node history
Node Type: note [id://1048761]
NodeReaper slips on a banana skin

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2018-06-22 04:08 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (121 votes). Check out past polls.