« WindowsのPerlで日本語パス名を処理すると0x5C文字でつまずく | トップページ | 私的2010年五大ITニュース »

2009年12月17日

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スクリプトでいくら工夫しても無駄なのではないだろうか。

|

« WindowsのPerlで日本語パス名を処理すると0x5C文字でつまずく | トップページ | 私的2010年五大ITニュース »

コメント

opendirの第2引数が0x5Cで終わるときが問題
http://bugs.activestate.com/show_bug.cgi?id=81839

投稿: | 2010年10月29日 17時21分

この記事へのコメントは終了しました。

« WindowsのPerlで日本語パス名を処理すると0x5C文字でつまずく | トップページ | 私的2010年五大ITニュース »