2010-12-20 17 views
47

Aby sprawdzić, czy plik istnieje przed użyciem go, możemy użyć:Jak sprawdzić, czy katalog istnieje w Perlu?

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

Ale jak indentify katalog istnieje, czy nie?

+1

Około połowa twoich pytań w Perlu dotyczy bardzo podstawowych tematów. Możesz zaoszczędzić sobie trochę czasu, czytając książki. [Perl 语言 入门 ④] (http://oreilly.com.cn/book.php?bn=978-7-5641-0636-2), [Learning Perl ⑤] (http://oreilly.com/catalog/ 9780596520113 /) – daxim

+29

Zgaduję, że zajęło mu to bardzo mało czasu, aby zadać te pytania, i są one bardzo pomocnymi wynikami wyszukiwania. Nie bądź uczącym się bigotem. –

+1

@Adam Myślę, że punktem daxim jest to, że pytania perlowe OP (łącznie z tym) są dość proste i dlatego przeczytanie przeglądu perla może zaoszczędzić trochę czasu w porównaniu z zadawaniem mnóstwa konkretnych pytań, których odpowiedzi można łatwo znaleźć w inny sposób – GreenGiant

Odpowiedz

85

Zastosowanie -d (full list of file tests)

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 
} 

Jako notatkę, -e nie rozróżnia plików i katalogów. Aby sprawdzić, czy coś istnieje i jest zwykłym plikiem, użyj -f.

+3

Jeśli używasz -d, to nie potrzebujesz -e (-d zwraca false w nieistniejących katalogach). –

+9

@Peter - podczas gdy technicznie poprawne, w kodzie produkcyjnym zwykle lepiej jest wykonać polecenie -e, po którym następuje -d, więc komunikaty o błędach mogą być bardziej ukierunkowane. Istnieje różnica między "nie istnieje" i "istnieje jako nie katalogu", jeśli chodzi o rozwiązywanie problemów w produkcji. – DVK

Powiązane problemy