use strict; use warnings; use Data::Dumper; use File::Find::Rule; use File::Path 'rmtree'; my $directory="/cache"; my @subdirs = File::Find::Rule->directory->in($directory ); print grep {!/$directory\/_.*?$/ and !/^$directory$/ and rmtree($_) }@subdirs;