first commit

This commit is contained in:
douboer
2025-09-17 16:08:16 +08:00
parent 9395faa6b2
commit 3ff47c11d5
1318 changed files with 117477 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
###
### dir_walk_curried
###
## Chapter 7 section 2.4
sub dir_walk {
unshift @_, undef if @_ < 3;
my ($top, $filefunc, $dirfunc) = @_;
my $r;
$r = sub {
my $DIR;
my $top = shift;
if (-d $top) {
my $file;
unless (opendir $DIR, $top) {
warn "Couldn't open directory $code: $!; skipping.\n";
return;
}
my @results;
while ($file = readdir $DIR) {
next if $file eq '.' || $file eq '..';
push @results, $r->("$top/$file");
}
return $dirfunc->($top, @results);
} else {
return $filefunc->($top);
}
};
defined($top) ? $r->($top) : $r;
}