Проверьте, существует ли что-то по заданному пути, с помощью оператора -e
file-test.
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
Файл является символической ссылкой (false, если символические ссылки не поддерживаются файловой системой).
-p
Файл - это именованный канал (FIFO), или Filehandle - это канал.
-S
Файл является сокетом.
-b
Файл - это специальный файл блока.
-c
Файл - это специальный символьный файл.
-t
Файловый дескриптор открыт для tty.
-u
В файле установлен бит setuid.
-g
В файле установлен бит setgid.
-k
В файле установлен липкий бит.
-T
Файл представляет собой текстовый файл ASCII или UTF-8 (эвристическое предположение).
-B
Файл является «двоичным» файлом (напротив -T
).
-M
Время запуска скрипта минус время модификации файла, в днях.
-A
То же самое для времени доступа.
-C
То же самое для времени изменения inode (Unix, может отличаться для других платформ)