<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 7, 2017 at 9:55 PM, Bill Moseley <span dir="ltr">&lt;<a href="mailto:moseley@hank.org" target="_blank">moseley@hank.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div><div><font face="monospace, monospace">        # Let it be set to undef</font></div><div><font face="monospace, monospace">        if (my $wanted = shift)  {</font></div><div><font face="monospace, monospace">            $encoding = Encode::find_encoding($wanted)</font></div><div><font face="monospace, monospace">              or Carp::croak( qq/Unknown encoding &#39;$wanted&#39;/ );</font></div><div><font face="monospace, monospace">            <b>binmode(STDERR, &#39;:encoding(&#39; . $encoding-&gt;name . &#39;)&#39;);</b></font></div></div><div><b><br></b></div><div><br></div><div>The problem with that is it seems to turn off autoflush on STDERR.   In my case that is causing intermixing of lines in the log files.</div><div><br></div><div>If I turn on STDERR-&gt;autoflush(1) then the logging works again and log lines are not mangled.</div><div><br></div><div>But, I&#39;m not sure we should apply a layer to STDERR like that.   For example, I log to stderr with JSON and that is already encoded.</div></div></blockquote><div><br></div><div>Just in case it isn&#39;t clear that is a problem:</div><div><br></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">use strict;</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">use warnings;</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">use Encode;</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">use JSON;</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace"><br></font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">binmode( STDERR, &#39;:utf8&#39; );</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">my $json = encode_json( { chars =&gt; decode_utf8( &#39;雨下降&#39; ) } );</font></div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div><font face="monospace, monospace">print STDERR &quot;$json\n&quot;;</font></div></div></div></div></blockquote><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>Results in:</div><div><br></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><div><font face="monospace, monospace">{&quot;chars&quot;:&quot;雨下陠&quot;}</font></div></div></div></blockquote><div class="gmail_extra"><div class="gmail_quote"><div><br></div></div><div><br></div>-- <br><div class="m_-6286813952989924518gmail_signature">Bill Moseley<br><a href="mailto:moseley@hank.org" target="_blank">moseley@hank.org</a></div>
</div></div>