以前に変更された STDIN の元のエンコーディングを復元することは可能ですか?
#!/usr/bin/env perl
use warnings;
use strict;
binmode STDIN, ':raw';
# do something here
# ...
# ...
# restore original STDIN encoding
binmode STDIN, $old_encoding;
これが機能するかどうかはわかりませんが、次の:pop
疑似エンコーディングがあります。
最上層を削除します。perl コードにレイヤ スタックを操作する方法を提供します。実験的なものと考えるべきです。:pop は実際のレイヤーでのみ機能し、:utf8 のような疑似レイヤーの効果を取り消さないことに注意してください。考えられる使用例は次のとおりです。
open($fh,...)
...
binmode($fh,":encoding(...)"); # next chunk is encoded
...
binmode($fh,":pop"); # back to un-encoded
より洗練された (そしてより安全な) インターフェイスが必要です。