zapfile ($subdir); sub zapfile { my ($file) = shift; print "Removing $file...\n"; if (-d $file) { opendir(my $dh, $file) or die "Unable to open $file: $!"; while (my $name = readdir($dh)) { next if $name eq '.' or $name eq '..'; # Recursive call! zapfile ("$file/$name"); } closedir $dh; rmdir ($file) or die "Unable to rmdir $file: $!"; } else { unlink $file or die "Unable to remove $file: $!"; } }