use strict; use warnings; use feature 'say'; use Data::Dumper; use Path::Tiny; use Time::Piece; my $root = "/Users/1nickt/perlmonks/11133966"; my $today = localtime->strftime('%Y%m%d'); my %list; path($root)->visit(sub { my $path = shift; next unless -d $path; my $date = substr($path, -8); if ( $date =~ /^[0-9]{4}[0-2][0-9][0-3][0-9]$/ && $date gt $today ) { push(@{ $list{$_->parent} }, $path =~ s{.+/}{}r); } }, { recurse => 1, }); say Dumper \%list;