ファイル名を文字列として扱いたいってのとは話が別
Perlでマルチバイトを含めた文字列を扱う時は、UTF8フラグ付きの文字列として扱うのが標準的な作法です。
おおいに結構。どうぞそうしてください。私も必要があればそうしています。
でもね、お作法というなら、UTF8フラグ付きの文字列として扱う前にはdecodeをするのがお作法。ファイルシステム含め外部とのやりとりをするときはencodeするのもお作法。Windows以外のOSで作られたファイルを相手にすることもあるのでWindows上であろうとdecode/encodeともにかならずCP932になるとは限りませんが、コードで書けばこうなるわけでしょ?
use Encode; for my $file (glob('*')) { $file = decode('CP932', $file); ... open my $fh, '<', encode('CP932', $file) or die; ... }
ここまでしてもなおエンコーディング違い以外の理由でPerlがマルチバイトのファイル名を正しく扱えないことがあるというなら、それは弾さんを含むportersに報告すべきバグだと思いますが……?