Files
devops/perl/Examples/Chap1/dir-walk-cb-def
2025-09-17 16:08:16 +08:00

30 lines
567 B
Plaintext

###
### 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): () ;
}
}