Перевірте, чи існує щось на заданому шляху за допомогою -e
оператора тестування файлів.
print "$base_path exists!\n" if -e $base_path;
Однак цей тест, ймовірно, ширший, ніж ви маєте намір. Код, що наведено вище, генерує вихід, якщо на цьому шляху існує звичайний файл, але він також запустить для каталогу, іменованої труби, символьної посилання або більш екзотичної можливості. Детальну інформацію див. У документації .
З огляду на розширення .TGZ
вашого запитання, схоже, ви очікуєте простого файлу, а не альтернативи. Оператор -f
тестування файлів запитує, чи веде шлях до простого файлу.
print "$base_path is a plain file!\n" if -f $base_path;
Документація perlfunc охоплює довгий список операторів тестування файлів Perl, який охоплює багато ситуацій, з якими ви зіткнетесь на практиці.
-r
Файл читається за допомогою ефективного uid / gid.
-w
Файл можна записати за допомогою ефективного uid / gid.
-x
Файл виконується за допомогою ефективного uid / gid.
-o
Файлом належить ефективний uid.
-R
Файл читається справжнім uid / gid.
-W
Файл можна записати справжнім uid / gid.
-X
Файл виконується справжнім uid / gid.
-O
Файл належить справжньому uid.
-e
Файл існує.
-z
Файл має нульовий розмір (порожній).
-s
Файл має ненульовий розмір (повертає розмір у байтах).
-f
Файл - це звичайний файл.
-d
Файл - це каталог.
-l
Файл - це символьне посилання (помилкове, якщо символьні посилання не підтримуються файловою системою).
-p
Файл - це названа труба (FIFO), або Filehandle - це труба.
-S
Файл - це сокет.
-b
Файл - це спеціальний файл блоку.
-c
Файл - це спеціальний файл символів.
-t
Filehandle відкривається до tty.
-u
У файлі встановлено встановлений біт.
-g
Для файлу встановлено жорсткий біт.
-k
У файлі встановлено клейкий біт.
-T
Файл - це текстовий файл ASCII або UTF-8 (евристична здогадка).
-B
Файл - це "двійковий" файл (навпроти -T
).
-M
Час початку сценарію мінус час зміни файлу, в днях.
-A
Те саме для часу доступу.
-C
Те саме для часу зміни inode (Unix, може відрізнятися для інших платформ)