Jawaban:
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 bernama myMock.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"
-X FILEHANDLE
-X EXPR
-X DIRHANDLE
-X A file test, where X is one of the letters listed below. This unary operator takes one argument,
either a filename, a filehandle, or a dirhandle, and tests the associated file to see if something is
true about it. If the argument is omitted, tests $_, except for "-t", which tests STDIN. Unless
otherwise documented, it returns 1 for true and '' for false, or the undefined value if the file
doesn’t exist. Despite the funny names, precedence is the same as any other named unary operator.
The operator may be any of:
-r File is readable by effective uid/gid.
-w File is writable by effective uid/gid.
-x File is executable by effective uid/gid.
-o File is owned by effective uid.
-R File is readable by real uid/gid.
-W File is writable by real uid/gid.
-X File is executable by real uid/gid.
-O File is owned by real uid.
-e File exists.
-z File has zero size (is empty).
-s File has nonzero size (returns size in bytes).
-f File is a plain file.
-d File is a directory.
-l File is a symbolic link.
-p File is a named pipe (FIFO), or Filehandle is a pipe.
-S File is a socket.
-b File is a block special file.
-c File is a character special file.
-t Filehandle is opened to a tty.
-u File has setuid bit set.
-g File has setgid bit set.
-k File has sticky bit set.
-T File is an ASCII text file (heuristic guess).
-B File is a "binary" file (opposite of -T).
-M Script start time minus file modification time, in days.
if (-e $base_path)
{
# code
}
-e
adalah operator 'keberadaan' di Perl.
Anda dapat memeriksa izin dan atribut lainnya menggunakan kode di halaman ini .
Kamu bisa memakai: if(-e $base_path)
-f
untuk menguji file normal (sebagai lawan dari direktori atau berbagai jenis file khusus lainnya)
Menggunakan:
if (-f $filePath)
{
# code
}
-e
mengembalikan nilai true meskipun file tersebut adalah direktori. -f
hanya akan mengembalikan true jika itu file yang sebenarnya
#!/usr/bin/perl -w
$fileToLocate = '/whatever/path/for/file/you/are/searching/MyFile.txt';
if (-e $fileToLocate) {
print "File is present";
}
if(-e $base_path){print "Something";}
akan berhasil
Gunakan kode di bawah ini. Di sini -f memeriksa, itu file atau bukan:
print "File $base_path is exists!\n" if -f $base_path;
dan nikmati