Удаление файла
Проблема
Требуется удалить файл. Функция Perl delete вам не подходит.
Решение
Воспользуйтесь функцией Perl unlink:
unlink($FILENAME) or die "Can't delete $FILENAME: $!\n"
unlink(@FILENAMES) == @FILENAMES or die
"Couldn't unlink all of @FILENAMES: $!\n";
Комментарий
Функция unlink была названа по имени системной функции UNIX. В Perl она получает
список имен файлов и возвращает количество успешно удаленных файлов. Возвращаемое значение
можно проверить с помощью || или or:
unlink($file) or die "Can't unlink $file: $!";
Функция unlink не сообщает, какие файлы не были удалены — лишь их общее количество.
Следующий фрагмент проверяет, успешно ли состоялось удаление нескольких файлов, и выводит
количество удаленных файлов:
unless (($count = unlink(@filelist)) == @filelist) {
warn "could only delete $count of "
. (@filelist) . " files";
}
Перебор @filelist в цикле fоreach позволяет выводить отдельные сообщения об ошибках.
В UNIX удаление файла из каталога требует права записи для каталога, а не для файла,
поскольку изменяется именно каталог. В некоторых ситуациях появляется возможность удаления
файла, в который запрещена запись, или записи в файл, который нельзя удалить.
Если удаляемый файл открыт некоторым процессом, операционная система удаляет элемент
каталога, но не освобождает блоки данных до закрытия файла во всех процессах.
См. также
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|