Проверьте, существует ли что-то по заданному пути, используя -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
Файл принадлежит действующему идентификатору пользователя.
-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, может отличаться для других платформ)