作者: Zazel
日時: 2005/9/05(16:23)
Zazelです。

=== kbk@... (Bruce.) さんが書かれた
=== <20050905032931.3D4A12161A8@...> にて

> > > えーと、use encoding の影響範囲は スクリプト STDIN STDOUT で
> > > utf8変換されると理解しているのですが、認識合ってますか?
> > > だから <> を使うと危険なのは当り前というか。
> > 
> > あってると思います。
> 
> 気になったので調べてなおしてみました。
> 
> 普通にopenしたストリームにも影響するようです。
> 逆に、use encoding していて、あるストリームは無変換で取り出したい
> というときにはちと面倒なことになりそうです。

chomp() のせいだと思います。

|              If the "encoding" pragma is in scope then the lengths returned
|              are calculated from the length of $/ in Unicode characters,
|              which is not always the same as the length of $/ in the native
|              encoding.

chompを呼ばないときは無変換で格納されているのがみえます。

use encoding 'sjis';
open my $file1, '<', 'sjis.txt' or die;
while (<$file1>) {
    #chomp;
    print((join " ", map {sprintf "%02X", $_} unpack "C*", $_), "\n");
    print length($_), ":$_\n";
}
close $file1;


(* SEKI Masatoshi  //  Zazel                      *)
(*  Would you hold my hand? Softly, let's linger. *)