Uji apakah ada sesuatu di jalur tertentu menggunakan -e
operator file-test.
print "$base_path exists!\n" if -e $base_path;
Namun, tes ini mungkin lebih luas dari yang Anda inginkan. Kode di atas akan menghasilkan output jika file biasa ada di jalur itu, tetapi juga akan diaktifkan untuk direktori, pipa bernama, symlink, atau kemungkinan yang lebih eksotis. Lihat dokumentasi untuk detailnya.
Mengingat ekstensi dari .TGZ
pertanyaan Anda, tampaknya Anda mengharapkan file biasa daripada alternatifnya. Operator -f
file-test menanyakan apakah jalur mengarah ke file biasa.
print "$base_path is a plain file!\n" if -f $base_path;
Dokumentasi perlfunc mencakup daftar panjang operator pengujian file Perl yang mencakup banyak situasi yang akan Anda hadapi dalam praktik.
-r
File dapat dibaca oleh uid / gid yang efektif.
-w
File dapat ditulis oleh uid / gid yang efektif.
-x
File dapat dieksekusi oleh uid / gid yang efektif.
-o
File dimiliki oleh uid yang efektif.
-R
File dapat dibaca oleh uid / gid asli.
-W
File dapat ditulis oleh uid / gid asli.
-X
File dapat dieksekusi oleh uid / gid asli.
-O
File dimiliki oleh uid asli.
-e
File ada.
-z
File berukuran nol (kosong).
-s
File memiliki ukuran bukan nol (ukuran hasil dalam byte).
-f
File adalah file biasa.
-d
File adalah direktori.
-l
File adalah tautan simbolis (salah jika symlink tidak didukung oleh sistem file).
-p
File adalah pipa bernama (FIFO), atau Filehandle adalah pipa.
-S
File adalah soket.
-b
File adalah file khusus blok.
-c
File adalah file khusus karakter.
-t
Filehandle dibuka untuk tty.
-u
File telah menetapkan bit setuid.
-g
File memiliki kumpulan bit setgid.
-k
File memiliki kumpulan bit lengket.
-T
File adalah file teks ASCII atau UTF-8 (tebakan heuristik).
-B
File adalah file "biner" (kebalikan dari -T
).
-M
Waktu mulai skrip dikurangi waktu modifikasi file, dalam hari.
-A
Sama untuk waktu akses.
-C
Sama untuk waktu perubahan inode (Unix, mungkin berbeda untuk platform lain)
-e
berfungsi dengan jalur relatif, tetapi saya pikir saya mungkin telah salah memahami pertanyaan Anda. Apakah Anda memiliki direktori bernamamyMock.TGZ
, dan Anda ingin tahu apakah direktori tersebut berisi file dengan nama tertentu? Bantu kami memberikan jawaban yang lebih baik dengan mengedit pertanyaan Anda untuk menyertakan contoh!Anda mungkin menginginkan varian dari ada ... perldoc -f "-f"
sumber
-e
adalah operator 'keberadaan' di Perl.Anda dapat memeriksa izin dan atribut lainnya menggunakan kode di halaman ini .
sumber
Kamu bisa memakai:
if(-e $base_path)
sumber
-f
untuk menguji file normal (sebagai lawan dari direktori atau berbagai jenis file khusus lainnya)Menggunakan:
-e
mengembalikan nilai true meskipun file tersebut adalah direktori.-f
hanya akan mengembalikan true jika itu file yang sebenarnyasumber
sumber
akan berhasil
sumber
Gunakan kode di bawah ini. Di sini -f memeriksa, itu file atau bukan:
dan nikmati
sumber