Проверьте, существует ли что-то по заданному пути, используя -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, может отличаться для других платформ)
-e
работает с относительными путями, но я думаю, что я неправильно понял ваш вопрос. У вас есть каталог с именемmyMock.TGZ
, и вы хотите знать, содержит ли этот каталог файл с определенным именем? Помогите нам дать вам более точные ответы, добавив в свой вопрос примеры!Возможно, вам понадобится вариант exists ... perldoc -f "-f"
источник
-e
является оператором «существования» в Perl.Вы можете проверить разрешения и другие атрибуты с помощью кода на этой странице .
источник
Ты можешь использовать:
if(-e $base_path)
источник
-f
для проверки обычного файла (в отличие от каталога или различных других специальных типов файлов)Использование:
-e
возвращает истину, даже если файл является каталогом.-f
вернет только истину, если это настоящий файлисточник
источник
сделает трюк
источник
Используйте приведенный ниже код. Здесь -f проверяет, файл это или нет:
и наслаждаться
источник