Dosya testi operatörünü kullanarak belirli yolda bir şey olup olmadığını -etest edin.
print "$base_path exists!\n" if -e $base_path;
Ancak, bu test muhtemelen sizin düşündüğünüzden daha geniştir. Yukarıdaki kod, bu yolda düz bir dosya varsa çıktı üretir, ancak aynı zamanda bir dizin, adlandırılmış bir kanal, bir sembolik bağlantı veya daha egzotik bir olasılık için de tetiklenir. Ayrıntılar için belgelere bakın.
Sorunuzdaki uzantısı göz önüne alındığında, alternatifler yerine sade bir dosya.TGZ bekliyorsunuz gibi görünüyor . Dosya test operatörü bir yol düz bir dosyaya yol açar sorar.-f
print "$base_path is a plain file!\n" if -f $base_path;
Perlfunc belgeleri , uygulamada karşılaşacağınız birçok durumu kapsayan Perl'in dosya testi operatörlerinin uzun listesini kapsar.
-r
Dosya, etkin uid / gid ile okunabilir.
-w
Dosya, etkin uid / gid ile yazılabilir.
-x
Dosya, etkin uid / gid tarafından çalıştırılabilir.
-o
Dosya, etkin kullanıcı kimliğine aittir.
-R
Dosya gerçek uid / gid tarafından okunabilir.
-W
Dosya gerçek uid / gid ile yazılabilir.
-X
Dosya gerçek uid / gid tarafından çalıştırılabilir.
-O
Dosya gerçek kullanıcı kimliğine aittir.
-e
Dosya var.
-z
Dosya sıfır boyuta sahip (boş).
-s
Dosyanın boyutu sıfırdan farklıdır (boyutu bayt cinsinden döndürür).
-f
Dosya düz bir dosyadır.
-d
Dosya bir dizindir.
-l
Dosya sembolik bir bağdır (sembolik bağlar dosya sistemi tarafından desteklenmiyorsa yanlıştır).
-p
Dosya, adlandırılmış bir kanaldır (FIFO) veya Dosya İşleyicisi bir kanaldır.
-S
Dosya bir sokettir.
-b
Dosya, özel bir blok dosyadır.
-c
Dosya, karaktere özel bir dosyadır.
-t
Filehandle bir tty'ye açılır.
-u
Dosyada setuid bit seti var.
-g
Dosya setgid bit setine sahip.
-k
Dosyada yapışkan bit ayarlanmış.
-T
Dosya bir ASCII veya UTF-8 metin dosyasıdır (sezgisel tahmin).
-B
Dosya bir "ikili" dosyadır (tersi -T).
-M
Komut dosyası başlangıç zamanı eksi dosya değiştirme süresi, gün cinsinden.
-A
Erişim süresi için aynı.
-C
İnode değiştirme zamanı için aynı (Unix, diğer platformlar için farklılık gösterebilir)