Teste se algo existe em determinado caminho usando o -e
operador de teste de arquivo.
print "$base_path exists!\n" if -e $base_path;
No entanto, este teste é provavelmente mais amplo do que você pretende. O código acima irá gerar saída se um arquivo simples existir nesse caminho, mas também irá disparar para um diretório, um pipe nomeado, um link simbólico ou uma possibilidade mais exótica. Consulte a documentação para obter detalhes.
Dada a extensão de .TGZ
em sua pergunta, parece que você espera um arquivo simples em vez de alternativas. O -f
operador de teste de arquivo pergunta se um caminho leva a um arquivo simples.
print "$base_path is a plain file!\n" if -f $base_path;
A documentação do perlfunc cobre a longa lista de operadores de teste de arquivo do Perl que cobre muitas situações que você encontrará na prática.
-r
O arquivo pode ser lido por uid / gid efetivo.
-w
O arquivo é gravável pelo uid / gid efetivo.
-x
O arquivo é executável pelo uid / gid efetivo.
-o
O arquivo pertence ao uid efetivo.
-R
O arquivo pode ser lido por uid / gid real.
-W
O arquivo pode ser escrito por uid / gid real.
-X
O arquivo é executável por uid / gid real.
-O
O arquivo é propriedade de uid real.
-e
O arquivo existe.
-z
O arquivo tem tamanho zero (está vazio).
-s
O arquivo tem tamanho diferente de zero (retorna o tamanho em bytes).
-f
O arquivo é um arquivo simples.
-d
O arquivo é um diretório.
-l
O arquivo é um link simbólico (falso se os links simbólicos não forem suportados pelo sistema de arquivos).
-p
Arquivo é um canal nomeado (FIFO) ou Filehandle é um canal.
-S
O arquivo é um soquete.
-b
O arquivo é um arquivo especial de bloco.
-c
Arquivo é um arquivo especial de caracteres.
-t
Filehandle é aberto para um tty.
-u
O arquivo foi definido com o bit setuid.
-g
O arquivo foi definido com o bit setgid.
-k
O arquivo tem o bit sticky definido.
-T
Arquivo é um arquivo de texto ASCII ou UTF-8 (estimativa heurística).
-B
O arquivo é um arquivo “binário” (oposto de -T
).
-M
Hora de início do script menos a hora de modificação do arquivo, em dias.
-A
O mesmo para o tempo de acesso.
-C
O mesmo para o tempo de mudança de inode (Unix, pode ser diferente para outras plataformas)
-e
funciona com caminhos relativos, mas acho que não entendi sua pergunta. Você tem um diretório chamadomyMock.TGZ
e deseja saber se esse diretório contém um arquivo com um nome específico? Ajude-nos a dar respostas melhores editando sua pergunta para incluir exemplos!Você pode querer uma variante de existe ... perldoc -f "-f"
fonte
-e
é o operador de 'existência' em Perl.Você pode verificar as permissões e outros atributos usando o código nesta página .
fonte
Você pode usar:
if(-e $base_path)
fonte
-f
para testar um arquivo normal (em oposição a um diretório ou vários outros tipos especiais de arquivo)Usar:
-e
retorna verdadeiro mesmo se o arquivo for um diretório.-f
só retornará verdadeiro se for um arquivo realfonte
fonte
faria o truque
fonte
Use o código abaixo. Aqui -f verifica se é um arquivo ou não:
e aproveitar
fonte