Editor's note: Perl guru Tom Christiansen created and maintains a list of 44 recipes for working with Unicode in Perl 5. Perl.com is pleased to serialize this list over the coming weeks.
? 15: Declare STD{IN,OUT,ERR} to be UTF-8
Always convert to and from your desired encoding at the edges of your
programs. This includes the standard filehandles STDIN,
STDOUT, and STDERR.
As documented in perldoc
perlrun, the PERL_UNICODE environment variable or the
-C command-line flag allow you to tell Perl to encode and decode
from and to these filehandles as UTF-8, with the S option:
$ perl -CS ...
# or
$ export PERL_UNICODE=S
Within your program, the open pragma allows you to set the default encoding of these filehandles all at once:
use open qw(:std :utf8);
Because Perl uses IO layers to implement encoding and decoding, you may also use the binmode operator on filehandles directly:
binmode(STDIN, ":utf8");
binmode(STDOUT, ":utf8");
binmode(STDERR, ":utf8");




