うーむ、>>14の例がどうしてutf8が優先されるのか分からない。
それは置いといて、encodingを使うと、
binmode STDIN => ":raw :encoding(cp932)";
binmode STDOUT => ":raw :encoding(cp932)";
こうなって、"\n"の挙動が変わるから注意は必要だね。