commit 15d5db13de4e74e63ecf44a0d687712124a6bca8 parent b2a3055319a2c8e8d2ba0f0ba05411c4d5dcf746 Author: lumidify <nobody@lumidify.org> Date: Sun, 22 Mar 2020 15:19:52 +0100 Add make_dir_iter Diffstat:
M | lumia.pl | | | 24 | ++++++++++++++++++++++++ |
1 file changed, 24 insertions(+), 0 deletions(-)
diff --git a/lumia.pl b/lumia.pl @@ -32,6 +32,30 @@ use Cwd qw(getcwd); use POSIX qw(SIGINT); use Data::Dumper; use Scalar::Util qw(looks_like_number); +use Getopt::Long; + +sub make_dir_iter { + my @queue = @_; + return sub { + while (@queue) { + my $file = shift @queue; + if (!-d $file) { + warn "WARNING: \"$file\" is not directory!"; + next; + } + my $dh; + if (!opendir $dh, $file) { + warn "WARNING: Unable to open directory \"$file\"!"; + next; + } + my @newdirs = grep {-d "$file/$_" && $_ ne "." && $_ ne ".."} readdir $dh; + push @queue, map "$file/$_", @newdirs; + closedir $dh; + return $file; + } + return; + }; +} my $CKSUM_CMD = 'cksum -q'; my $CKSUM_CHECK_CMD = 'cksum -c';