Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Restrict encoding of std streams to lexical scope

by choroba (Cardinal)
on Aug 09, 2013 at 12:33 UTC ( [id://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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2024-11-10 03:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    chatterbot is...






    Results (37 votes). Check out past polls.