n модуль для определения текущего
# предпочитают использовать отдельный модуль
ft (из семейства модулейОет.ор1: : ) для разбора (анализа) параметров
use Cwd: n модуль для определения текущего рабочего каталога
# Эта подпрограмма принимает имя каталога и рекурсивно
# сканирует файловую систему, начиная с этого места, ищет и файлы с именем "core"
sub ScanDirectory{
my (Sworkdir) = shift;
my (Sstartdir) = &cwd; ft запомнить, откуда мы начали
cndir(Jworkdir) or die "Невозможно войти в каталог $workdir:$!\n";
opendir(DIR, ".") or die "Невозможно открыть Sworkdir:$!\n";
my fflnames = readdir(DIR) or die "Невозможно прочитать Sworkdir:$!\n";
closedir(DIR);
foreach my $name (@names){ next if (Sname eq "."); next if ($name eq "..");
if (-1 $name){ # пропускаем ссылки
next; }
if (-d $name){ f* это каталог7
&ScanDirectory($name); next; }
if (Sname eq "core") { ft имя файла "core"? и
если в командной строке указан ключ, на самом и деле удаляем этот файл
if (defined $r) {
unlink($name) or die "Невозможно удалить Sname:$!\n";
}
else {
print "найден в Sworkdir1\n": > } } chdir(Sstartdir) or
die "Невозможно перейти к каталогу $startdir:$[\n"; }
&ScanDirectcry(".");
Самое важное отличие от предыдущего примера заключается в изменении поведения программы в случае, если найден подкаталог внутри требуемого каталога. Теперь, если был найден каталог, вместо того
чтобы сообщать об этом, как было в предыдущем примере, наша программа рекурсивно вызывает себя, чтобы изучить сначала содержимое этого каталога. По окончании сканирования всего подкаталога (т. е. вызов ScanDirectory() возвращает значение) программа возвращается к просмотру остального содержимого текущего каталога.
Для того чтобы сделать нашу программу полнофункциональным ликвидатором core-файлов, мы добавили в нее функцию удаления файлов. Обратите внимание на то, как это реализовано: файлы будут удалены, только если сценарий вызывается с определенным ключом -s (от «remove» - удаление) в командной строке.
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий