use File::Find qw(find); use Cwd; *name = *File::Find::name; my @dirs = @ARGV; my @legitdirs = grep { -d } @dirs; find( { "wanted" => \&unlinkplus, "bydepth"=>1, "no_chdir"=>1 } , @legitdirs); # danger, danger. high voltage. use at own risk. sub unlinkplus { warn "current dir :" . cwd . "\n"; if (!-l && -d _) { # not a link, is a directory warn "rmdir attempt :" . $name . "\n"; (rmdir($_) && warn "ok..." ) or warn "cannot rmdir $name:" . " $!"; } else { warn "file unlink :" . $name . ">"; (unlink($_) && warn "ok..." ) or warn "can't unlink " . $name . "$!"; } }