2012-05-04 15 views
0

以前に変更されたエンコードのSTDINの元のエンコードを復元することはできますか?エンコードを修正したSTDINに復元することはできますか?

#!/usr/bin/env perl 
use warnings; 
use strict; 

binmode STDIN, ':raw'; 

# do something here 
# ... 
# ... 

# restore original STDIN encoding 
binmode STDIN, $old_encoding; 
+0

実際はありません。まず、各レイヤーにバッファーを持たせることができるので、一時的にレイヤーを削除することでデータを失う可能性があります。 – ikegami

答えて

1

これが機能するかどうかを確認しますが、:pop pseudo-encodingありなし:

は、最上層を除去します。 perlコードにレイヤースタックを操作する方法を与えます。実験的であると考えられるべきである。注意:popは実際のレイヤーでのみ機能し、utf8のような擬似レイヤーの効果を取り消すことはありません。可能な用途の例は次のようになります。

open($fh,...) 
... 
binmode($fh,":encoding(...)"); # next chunk is encoded 
... 
binmode($fh,":pop");   # back to un-encoded 

よりエレガント(かつ安全)インターフェースが必要とされています。

関連する問題