Вот небольшой саб, выполняющий работу:
sub clean_dir
{
my $dir = shift;
require File::Spec;
if ($dir && -d $dir && opendir(DIR, $dir))
{
my @all = grep { -d (File::Spec->join($dir, $_) && m/^\./) } readdir(DIR);
@all = map { File::Spec->join($dir, $_) } @all;
closedir(DIR);
foreach my $f (grep { -f $_ } @all) {
unlink($f);
}
foreach my $d (grep { -d $_ } @all) {
clean_dir($d);
}
}
}
File::Spec
используется для правильной обработки символа, разделяющего элементы, то есть «/», «\» или чего-либо еще используемого в вашей системе.