# # This software is Copyright 2005 by Elsevier Inc. You may use it # under the terms of the license at http://perl.plover.com/hop/LICENSE.txt . # ### ### dir_walk_callbacks_defaults ### ## Chapter 1 section 5 sub dir_walk { my ($top, $filefunc, $dirfunc) = @_; my $DIR; if (-d $top) { my $file; unless (opendir $DIR, $top) { warn "Couldn't open directory top: $!; skipping.\n"; return; } my @results; while ($file = readdir $DIR) { next if $file eq '.' || $file eq '..'; push @results, dir_walk("$top/$file", $filefunc, $dirfunc); } return $dirfunc ? $dirfunc->($top, @results) : () ; } else { return $filefunc ? $filefunc->($top): () ; } }