perl5ever has asked for the wisdom of the Perl Monks concerning the following question:
And here is the output under various run conditions (the Ҋ is a Cryillic capital "ya"):use strict; use warnings; my $x = "\x{42f}"."\n"; warn "printing to /tmp/foo\n"; open(my $fh, ">:utf8", "/tmp/foo") or die "open: $!"; print {$fh} $x; warn "printing to STDOUT\n"; print $x; warn "printing to duped STDOUT\n"; open(my $gh, ">&:utf8", \*STDOUT) or die "open: $!"; print {$gh} $x;
It seems that:$ LANG=C ./script printing to /tmp/foo printing to STDOUT Wide character in print at t5 line 13. Ҋ printing to duped STDOUT Ҋ $ LANG=en_US.UTF-8 ./script printing to /tmp/foo printing to STDOUT Ҋ printing to duped STDOUT Ҋ $ LANG=C ./script > /tmp/out printing to /tmp/foo printing to STDOUT Wide character in print at t5 line 13. printing to duped STDOUT Wide character in print at t5 line 18. $ LANG=en_US.UTF-8 ./script > /tmp/out printing to /tmp/foo printing to STDOUT printing to duped STDOUT Wide character in print at t5 line 18.
Btw, I'm using 5.8.0 - yes, very ancient.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: dup and add an encoding layer to a file handle?
by Anonymous Monk on Mar 13, 2009 at 07:11 UTC |