Как узнать, существует ли каталог в Perl?

49

Чтобы узнать, существует ли файл перед его использованием, мы можем использовать:

if (-e "filename.cgi")
{
 #proceed with your code
} 

Но как определить каталог существует или нет?

  • 1
    Около половины ваших вопросов по Perl имеют дело с очень простыми темами. Вы можете сэкономить время, если прочитаете несколько книг. Perl 语言 入门 ④ , изучение Perl ⑤
  • 31
    Я предполагаю, что ему понадобилось очень мало времени, чтобы задать эти вопросы, и они очень полезны для результатов поиска. Не будь фанатом стиля обучения.
Показать ещё 3 комментария
Теги:
directory
file-io

1 ответ

85
Лучший ответ

Используйте -d (полный список тестов файлов)

if (-d "cgi-bin") {
    # directory called cgi-bin exists
}
elsif (-e "cgi-bin") {
    # cgi-bin exists but is not a directory
}
else {
    # nothing called cgi-bin exists
}

В качестве примечания, -e не различает файлы и каталоги. Чтобы проверить, существует ли что-либо, и является простым файлом, используйте -f.

  • 3
    Если вы используете -d, то вам не нужен -e (-d возвращает false для несуществующих каталогов).
  • 9
    @Peter - хотя технически правильно, в производственном коде обычно лучше делать -e, а затем -d, поэтому сообщения об ошибках могут быть более целенаправленными. Существует разница между «не существует» и «существует как не-каталог» в том, что касается решения проблем в производстве.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню