2010-12-20 6 views
47

Um zu sehen, ob eine Datei, um sie vor der Anwendung vorhanden ist, können wir verwenden:Wie sehen Sie, ob in Perl ein Verzeichnis existiert oder nicht?

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

Aber wie ein Verzeichnis existiert oder nicht indentify?

+1

Etwa die Hälfte Ihrer Perl-Fragen befassen sich mit sehr grundlegenden Themen. Sie können sich Zeit sparen, wenn Sie einige Bücher lesen. [Perl 语言 入门 ④] (http://oreilly.com.cn/book.php?bn=978-7-5641-0636-2), [Lernen Perl ⑤] (http://oreilly.com/catalog/ 9780596520113 /) – daxim

+29

Ich nehme an, es hat ihn sehr wenig Zeit gekostet, diese Fragen zu stellen, und sie sind sehr hilfreiche Suchergebnisse. Sei kein fanatischer Lernstil. –

+1

@Adam Ich denke, Daxim's Punkt ist nur, dass die Perl-Fragen des OPs alle ziemlich einfach sind und das Lesen eines Perl-Überblicks könnte etwas Zeit sparen im Vergleich zu vielen spezifischen Fragen, deren Antworten leicht auf andere Arten gefunden werden können – GreenGiant

Antwort

85

Verwenden -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 
} 

Als Hinweis, -e unterscheidet nicht zwischen Dateien und Verzeichnissen. Um zu überprüfen, ob etwas existiert und eine einfache Datei ist, verwenden Sie -f.

+3

Wenn Sie -d verwenden, brauchen Sie -e nicht (-d gibt false für nicht vorhandene Verzeichnisse zurück). –

+9

@Peter - während technisch korrekt, in Produktionscode ist es in der Regel besser zu tun -e gefolgt von -d, so dass die Fehlermeldungen gezielter sein können. Es gibt einen Unterschied zwischen "nicht existiert" und "existiert als ein Nicht-Verzeichnis", was die Problemlösung in der Produktion angeht. – DVK

Verwandte Themen