WindowsXPでPerlスクリプトを実行しています。
以下のスクリプト「Perlで階層のあるディレクトリを走査する」
http://code.nanigac.com/source/view/535
を利用して、あるフォルダ以下にあるファイルリストを出力するスクリプトを作っています。
しかし、「表」「予」「申」「能」「十」「ソ」などの0x5C文字がフォルダ名の最後に付いていると
そのフォルダより下を走査できません。
[例]¥日程表¥ ¥教育技能¥
これ以下も走査出来るようにするにはどうすればよいでしょうか。
こんな感じでどうでしょうか。
use File::Basename; # entry : サーチするディレクトリ # depth : 階層の深さ(tabインテンドの表示数) sub my_walk { my $entry = $_[0]; my $depth = $_[1]; my $type = ""; $type = "(d)" if (-d "$entry/"); $type = "(s)" if (-l "$entry/"); print "|\t" x $depth, "+---->", basename($entry), $type, "\n"; return if (! -d "$entry/") || (-l "$entry/"); opendir(DIR, "$entry/"); my @list = sort readdir(DIR); foreach my $name (@list) { next if $name eq '.' || $name eq '..'; my_walk("${entry}/${name}", $depth+1); } closedir(DIR); } $entry = $ARGV[0]; $depth = $ARGV[1]; my_walk($entry, $depth);
回答ありがとうございます。
月曜日に試させていただきます。
→basenameでディレクトリ名は拾えませんでしたが、なんとかいけました。ありがとうございます!