Cómo distinguir un archivo de un directorio en Perl

Digamos que está creando un script Perl para atravesar un sistema de archivos y registrar lo que encuentra. A medida que abre los identificadores de archivos, debe saber si se trata de un archivo real o de un directorio, que trata de manera diferente. Desea glob un directorio, por lo que puede continuar analizando recursivamente el sistema de archivos. La forma más rápida de distinguir los archivos de los directorios es usar los Operadores de prueba de archivos integrados de Perl. Perl tiene operadores que puede usar para probar diferentes aspectos de un archivo. El operador -f se usa para identificar archivos regulares en lugar de directorios u otros tipos de archivos.

Uso del operador de prueba de archivo -f

 #! / usr / bin / perl -w
$ filename = '/path/to/your/file.doc';
$ nombre de directorio = '/ ruta / a / su / directorio';
if (-f $ filename)
print "Este es un archivo";

if (-d $ nombre_directorio)
print "Este es un directorio";

Primero, crea dos cadenas: una apuntando a un archivo y otra apuntando a un directorio. A continuación, pruebe el $ nombre de archivo con el -F operador, que comprueba si algo es un archivo. Esto imprimirá "Este es un archivo". Si prueba el operador -f en el directorio, no se imprime. Luego, haga lo contrario para el $ nombre de directorio y confirme que es, de hecho, un directorio. Combine esto con un globo de directorio para ordenar qué elementos son archivos y cuáles son directorios:

#! / usr / bin / perl -w
@files =;
foreach $ file (@files)
if (-f $ archivo)
imprima "Este es un archivo:". $ archivo;

if (-d $ archivo)
print "Este es un directorio:". $ archivo;


Una lista completa de operadores de prueba de archivos Perl está disponible en línea.