use File::Find; finddepth sub { return if $_ eq "." or $_ eq ".."; return unless -d; rmdir($_) or $! =~ /not empty/ or warn "Cannot rmdir $File::Find::name: $!"; }, @ARGV;