Sprawdź, czy coś istnieje w podanej ścieżce, używając -e
operatora testu pliku.
print "$base_path exists!\n" if -e $base_path;
Jednak ten test jest prawdopodobnie szerszy niż zamierzasz. Powyższy kod wygeneruje dane wyjściowe, jeśli w tej ścieżce istnieje zwykły plik, ale uruchomi się również dla katalogu, nazwanego potoku, dowiązania symbolicznego lub bardziej egzotycznej możliwości. Szczegółowe informacje można znaleźć w dokumentacji .
Biorąc pod uwagę rozszerzenie .TGZ
pytania, wydaje się, że spodziewasz się zwykłego pliku, a nie alternatyw. -f
Operatora plik test zapytuje, czy ścieżka prowadzi do zwykłego pliku.
print "$base_path is a plain file!\n" if -f $base_path;
Dokumentacja perlfunc zawiera długą listę operatorów testów plików Perla, która obejmuje wiele sytuacji, które napotkasz w praktyce.
-r
Plik można odczytać za pomocą efektywnego uid / gid.
-w
Plik jest zapisywalny przez efektywny UID / GID.
-x
Plik jest wykonywany przez efektywny uid / gid.
-o
Plik jest własnością efektywnego UID.
-R
Plik można odczytać za pomocą rzeczywistego UID / GID.
-W
Plik jest zapisywalny przez rzeczywisty UID / GID.
-X
Plik jest wykonywany przez prawdziwy UID / GID.
-O
Plik jest własnością prawdziwego UID.
-e
Plik istnieje.
-z
Plik ma zerowy rozmiar (jest pusty).
-s
Plik ma niezerowy rozmiar (zwraca rozmiar w bajtach).
-f
Plik jest zwykłym plikiem.
-d
Plik jest katalogiem.
-l
Plik jest dowiązaniem symbolicznym (fałsz, jeśli dowiązania symboliczne nie są obsługiwane przez system plików).
-p
Plik jest potokiem nazwanym (FIFO) lub Uchwyt pliku jest potokiem.
-S
Plik jest gniazdem.
-b
Plik jest blokowym plikiem specjalnym.
-c
Plik to znakowy plik specjalny.
-t
Filehandle jest otwierany na terminalu tty.
-u
Plik ma ustawiony bit setuid.
-g
Plik ma ustawiony bit setgid.
-k
Plik ma ustawiony bit lepki.
-T
Plik jest plikiem tekstowym ASCII lub UTF-8 (przypuszczenie heurystyczne).
-B
Plik jest plikiem „binarnym” (przeciwieństwo -T
).
-M
Czas rozpoczęcia skryptu minus czas modyfikacji pliku, w dniach.
-A
To samo dotyczy czasu dostępu.
-C
To samo dotyczy czasu zmiany i-węzła (Unix, może się różnić na innych platformach)
-e
działa ze ścieżkami względnymi, ale myślę, że mogłem źle zrozumieć twoje pytanie. Czy masz katalog o nazwiemyMock.TGZ
i chcesz wiedzieć, czy zawiera on plik o określonej nazwie? Pomóż nam udzielić Ci lepszych odpowiedzi, edytując swoje pytanie i dołączając przykłady!Możesz chcieć wariant istnieje ... perldoc -f "-f"
źródło
-e
jest operatorem „istnienia” w Perlu.Możesz sprawdzić uprawnienia i inne atrybuty za pomocą kodu na tej stronie .
źródło
Możesz użyć:
if(-e $base_path)
źródło
-f
do przetestowania normalnego pliku (w przeciwieństwie do katalogu lub różnych innych specjalnych typów plików)Posługiwać się:
-e
zwraca prawdę, nawet jeśli plik jest katalogiem.-f
zwróci prawdę tylko wtedy, gdy jest to rzeczywisty plikźródło
źródło
załatwi sprawę
źródło
Użyj poniższego kodu. Tutaj -f sprawdza, czy to plik czy nie:
i baw się dobrze
źródło