Ilan Kleiman
Ilan Kleiman

Reputation: 1209

Perl delete all files in a directory

How can I delete all the files in a directory, (without deleting the directory) in Perl?

My host only allows up to 250,000 "files" and my /tmp folder fills that 250,000 qouta fast with all the session cookies going on. I cannot delete the /tmp folder in this situation. I am only permitted to delete the files within.

EDIT:

FTP clients and File managers don't exactly want to open up the folder... I assume it's because of the massive amount of files in it..

Upvotes: 10

Views: 24802

Answers (2)

user3356
user3356

Reputation: 164

You can use this. You need to use glob for removing files:

unlink glob "'/tmp/*.*'";

These extra apostrophes are needed to handle filenames with spaces as one string.

Upvotes: 14

ikegami
ikegami

Reputation: 385897

my $errors;
while ($_ = glob('/tmp/* /tmp/.*')) {
   next if -d $_;
   unlink($_)
      or ++$errors, warn("Can't remove $_: $!");
}

exit(1) if $errors;

Upvotes: 25

Related Questions