- 118 名前:nobodyさん mailto:sage [2008/04/14(月) 08:31:02 ID:???]
- >>117
再起してるからじゃね?先にファイル一覧を取得してclosedirしてから再起呼び出しするか、 ディレクトリハンドル(DIR)をローカル変数に浮かすかすればインジャネ? traverse_html ※1 の中で traverse_html ※2 を呼び出す → ※1のDIRを※2で上書きする → ※1に戻ったとき ※2のDIRはclose済み テストしてないから動くかは知らんけどこんな感じ。 sub traverse_html { my $dirname = shift; my $delim = '/'; my @entrys = undef; my $i = 0, $j = 0; if ($dirname =~ /[\/\\]$/) { $delim = ''; } print "<ul>\n"; opendir(DIR, $dirname) or die "$dirname: $!"; foreach my $entry (readdir(DIR)) { next if ($entry eq '.'); next if ($entry eq '..'); $entrys($i++) = $entry; } closedir(DIR); for ($j=0;$j<$i;j++){ my $filename = "$dirname$delim$entrys($j)"; if (-d $filename) { print "<li>$entrys($j)\n"; &traverse_html($filename); } else { &do_html($filename, $entrys($j)); } } print "</ul>\n"; }
|

|