是否可以恢复先前修改过编码的STDIN的原始编码?
#!/usr/bin/env perl
use warnings;
use strict;
binmode STDIN, ':raw';
# do something here
# ...
# ...
# restore original STDIN encoding
binmode STDIN, $old_encoding;
答案 0 :(得分:1)
不确定这是否有效,但有:pop
pseudo-encoding:
删除最顶层。为perl代码提供了一种操作图层堆栈的方法。应该算是实验性的。请注意:pop仅适用于实际图层,不会撤消伪图层的效果,如:utf8。可能使用的示例可能是:
open($fh,...)
...
binmode($fh,":encoding(...)"); # next chunk is encoded
...
binmode($fh,":pop"); # back to un-encoded
需要更优雅(更安全)的界面。