09/04/02 17:30:30
>>4 に書いてあるとおり、教科書的な書き方をすれば、こうなる。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
opendir dir, encode('cp932','.');
@files = readdir dir;
for (@files) { $_ = decode('cp932', $_) }
for $file (@files) {
if (-d encode('cp932',$file)) {print "$file is directory.\n"}
else {print "$file is file.\n"}
}
ポイント
・OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、utf8 → cp932 に変換すること。
・逆に OS からもらう文字列(readdirなど)は cp932 → utf8 に変換すること。