Pruebe si existe algo en una ruta determinada utilizando el -e
operador de prueba de archivo.
print "$base_path exists!\n" if -e $base_path;
Sin embargo, esta prueba probablemente sea más amplia de lo que pretendes. El código anterior generará una salida si existe un archivo plano en esa ruta, pero también se activará para un directorio, una tubería con nombre, un enlace simbólico o una posibilidad más exótica. Consulte la documentación para obtener más detalles.
Dada la extensión de .TGZ
en su pregunta, parece que espera un archivo sin formato en lugar de las alternativas. El -f
operador de prueba de archivo pregunta si una ruta conduce a un archivo sin formato.
print "$base_path is a plain file!\n" if -f $base_path;
La documentación de perlfunc cubre la larga lista de operadores de prueba de archivos de Perl que cubre muchas situaciones que encontrará en la práctica.
-r
El archivo es legible por uid / gid efectivo.
-w
El archivo se puede escribir mediante uid / gid efectivo.
-x
El archivo es ejecutable por uid / gid efectivo.
-o
El archivo es propiedad de uid efectivo.
-R
El archivo es legible por uid / gid real.
-W
El archivo se puede escribir mediante uid / gid real.
-X
El archivo es ejecutable por uid / gid real.
-O
El archivo es propiedad de uid real.
-e
El archivo existe.
-z
El archivo tiene tamaño cero (está vacío).
-s
El archivo tiene un tamaño distinto de cero (devuelve el tamaño en bytes).
-f
El archivo es un archivo simple.
-d
El archivo es un directorio.
-l
El archivo es un enlace simbólico (falso si los enlaces simbólicos no son compatibles con el sistema de archivos).
-p
El archivo es una tubería con nombre (FIFO) o Filehandle es una tubería.
-S
El archivo es un socket.
-b
El archivo es un archivo especial de bloque.
-c
El archivo es un archivo especial de carácter.
-t
Filehandle se abre a un tty.
-u
El archivo tiene el bit setuid establecido.
-g
El archivo tiene el bit setgid establecido.
-k
El archivo tiene un bit adhesivo establecido.
-T
El archivo es un archivo de texto ASCII o UTF-8 (suposición heurística).
-B
El archivo es un archivo "binario" (opuesto a -T
).
-M
La hora de inicio del script menos la hora de modificación del archivo, en días.
-A
Lo mismo ocurre con el tiempo de acceso.
-C
Lo mismo para el tiempo de cambio de inodo (Unix, puede diferir para otras plataformas)
-e
funciona con rutas relativas, pero creo que he entendido mal tu pregunta. ¿Tiene un directorio con nombremyMock.TGZ
y desea saber si ese directorio contiene un archivo con un nombre en particular? Ayúdanos a darte mejores respuestas editando tu pregunta para incluir ejemplos.Es posible que desee una variante de existe ... perldoc -f "-f"
fuente
-e
es el operador 'existencia' en Perl.Puede verificar los permisos y otros atributos usando el código en esta página .
fuente
Puedes usar:
if(-e $base_path)
fuente
-f
para probar un archivo normal (a diferencia de un directorio o varios otros tipos especiales de archivo)Utilizar:
-e
devuelve verdadero incluso si el archivo es un directorio.-f
solo devolverá verdadero si es un archivo realfuente
fuente
haría el truco
fuente
Utilice el siguiente código. Aquí -f comprueba, es un archivo o no:
y disfrutar
fuente