use strict; use warnings; use File::Find; use File::Spec::Functions; use Text::Table; mkdir qq{case$_} for (1 .. 9); mkdir catdir(qq{case$_}, q{SORTED}) for (1 .. 9); mkdir catdir(qq{case$_}, q{CLEANED}) for (1 .. 5); mkdir catdir(qq{case$_}, q{PROCEED}) for (8 .. 9); my %HoH = (); my @AoA = (); find( { wanted => sub { return unless -d; return unless grep(/(SORTED|CLEANED|PROCEED)/, $_); $HoH{$File::Find::dir}->{$_}++; } }, '.' ); foreach my $key (sort {$a cmp $b} keys %HoH) { my @arr = (); for (qw(SORTED CLEANED PROCEED)) { exists($HoH{$key}->{$_}) ? push @arr, q[x] : push @arr, q[]; } push @AoA, [$key, @arr]; } my $tb = Text::Table->new(\'| ', "", \' | ', "CLEANED ", \'| ', "SORTED ", \'| ', "PROCEED", \' |'); $tb->load(@AoA); my $rule = $tb->rule(qw/- +/); print $rule, $tb->title, $rule, $tb->body, $rule; __END__