Алгоритм решения может быть следующим. Сначала заходим в заданную директорию, открываем поочередно находящиеся в ней директории, удаляем все находящиеся в ней файлы, закрываем директории и удаляем их. После этого удаляем все файлы, находящиеся в заданной директории, закрываем и удаляем ее.
Отметим, что в начале программы располагается проверка на наличие параметров в командной строке.
Текст программы:
#! perl -w # Проверка на наличие параметров # в командной строке. print "В командной строке отсутствует имя каталога!\n" unless defined $ARGV[0]; if (defined $ARGV[0]) # Выполняется в случае наличия параметра. { opendir FF, $ARGV[0]; # Открытие удаляемого каталога. while ( defined ($name = readdir FF)) # Пока есть каталоги. { # Использование только подкаталогов. if (!($name eq "." or $name eq ".." )) { opendir AA, "$ARGV[0]/$name" if -d $name; # Открытие удаляемого каталога. unlink <AA, "$ARGV[0]/$name/*.*">; # Удаление всех файлов из него. closedir AA; # Закрытие текущего каталога. rmdir "$ARGV[0]/$name"; # Удалить текущий каталог. } } unlink <FF, "$ARGV[0]/*.*">; # Удаление всех файлов. closedir FF; # Закрытие удаляемого каталога. rmdir "$ARGV[0]"; # Удалить текущий каталог. }