use PerlIO::encoding; open($f, "<:encoding(foo)", "infoo"); open($f, ">:encoding(bar)", "outbar"); use Encode qw(:fallbacks); $PerlIO::encoding::fallback = FB_PERLQQ;
On input, it converts the bytes expected to be in the specified character set and encoding to Perl string data (Unicode and Perl's internal Unicode encoding, UTF-8). On output, it converts Perl string data into the specified character set and encoding.
When the layer is pushed, the current value of $PerlIO::encoding::fallback is saved and used as the CHECK argument when calling the Encode methods encode() and decode().