是否可以恢复 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
需要一个更优雅(和更安全)的界面。