2010-12-20 16 views
47

Kullanmadan önce bir dosyanın bulunup bulunmadığını görmek için şunu kullanabiliriz:Perl'de bir dizinin var olup olmadığını nasıl görebilirim?

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

Ancak bir dizinin nasıl girilip girilmeyeceği belirtilmelidir?

+1

Perl sorularınızın yaklaşık yarısı çok temel konularla ilgilenir. Bazı kitapları okursanız kendinizi biraz zamandan tasarruf edebilirsiniz. [Perl 语言 入门 ④] (http://oreilly.com.cn/book.php?bn=978-7-5641-0636-2), [Öğrenim Perl ⑤] (http://oreilly.com/catalog/ 9780596520113 /) – daxim

+29

Sanırım bu soruları sormak için çok az zaman harcadı ve çok faydalı arama sonuçları. Öğrenme stili bir bağnaz olma. –

+1

@Adam Sanırım, OP'nin perl sorularının (bunun da dahil olduğu) hepsi oldukça basittir ve bu yüzden perl'e genel bir bakış okumak genel olarak zaman kazandırabilir ve cevapları kolaylıkla başka yollarla bulabileceğiniz birçok özel soru sorabilir. – GreenGiant

cevap

85

Kullanım -d (full list of file tests) Bir not olarak

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 dosyaları ve dizinleri arasında ayrım yapmaz. Bir şeyin var olup olmadığını kontrol etmek ve düz bir dosya olup olmadığını -f kullanın.

+3

-d kullanıyorsanız, o zaman -e (-d olmayan dizinler için false değerini döndürür) gerekmez. –

+9

@Peter - teknik olarak doğru olsa da, üretim kodunda genellikle -d takiben bunu yapmak daha iyidir, böylece hata iletileri daha iyi hedeflenebilir. Üretimde sorun çözümüne kadar "var olmayan" ve "dizin dışı olarak var" arasında bir fark var. – DVK

İlgili konular