Perlのopendirは第2引数が0x5Cで終わるとエラーになる?
ひとつ前の記事で「なるほど、こうすればいいか」と思ったWindowsでのPerl日本語ファイル名処理なのだが、理解が甘かったことが以下のような簡単なコードであっという間に分かってしまった。
use utf8;
use strict;
use Encode qw/encode decode/;
my $dir = "何十";
$dir = encode('Shift_JIS', $dir);
opendir(DIR, $dir) or die("Unable to open directory:$dir ($!)");
my @list = readdir(DIR);
print @list;
closedir(DIR);
「何十」というディレクトリを作って実行するとエラーになってしまう。
Unable to open directory:何十 (No such file or directory) at open_dir.pl line 8.
ディレクトリ名が「十分」であれば問題ない。ディレクトリ内のファイルが出力できる。
すると事態はもっと複雑、そしてやっかいで、opendirの第2引数が0x5Cで終わるときが問題だということになる。そうだとすると、Perlスクリプトでいくら工夫しても無駄なのではないだろうか。
| 固定リンク
この記事へのコメントは終了しました。
コメント
opendirの第2引数が0x5Cで終わるときが問題
http://bugs.activestate.com/show_bug.cgi?id=81839
投稿: | 2010年10月29日 17時21分