Puede usar readdir o glob.
O bien, puede utilizar un módulo como Path::Class:
Ordinariamente children()
no incluirá las entradas de auto y de los padres. y ... (o sus equivalentes en sistemas que no son de Unix), porque eso es como si yo fuera mi propio negocio. Si usted quiere todas las entradas de directorio que incluyen estos seres especiales, pasar un valor válido para el parámetro all:
@c = $dir->children(); # Just the children
@c = $dir->children(all => 1); # All entries
Además, hay un parámetro no_hidden que excluya todas las entradas normalmente "ocultos" - en Unix esto significa excluir todas las entradas que comienzan con un punto (.
):
@c = $dir->children(no_hidden => 1); # Just normally-visible entries
O Path::Tiny:
@paths = path("/tmp")->children;
@paths = path("/tmp")->children(qr/\.txt$/);
Devuelve una lista de objetos Path::Tiny
para todos los archivos y directorios dentro de un directorio. Excluye "."
y ".."
automáticamente.
Si se proporciona un argumento qr//
opcional, solo devuelve objetos para nombres secundarios que coinciden con la expresión regular dada. Sólo el nombre base se utiliza para la coincidencia:
@paths = path("/tmp")->children(qr/^foo/);
# matches children like the glob foo*
Obtener la lista de entradas de directorio en una desechos matriz algo de memoria (en lugar de obtener un nombre de archivo a la vez), pero con sólo unos pocos cientos de archivos , esto es poco probable que sea un problema.
Path::Class
es portátil para sistemas operativos que no sean * nix y Windows. Por otro lado, AFAIK, sus instancias usan más memoria que las instancias Path::Tiny
.
Si la memoria es un problema, es mejor utilizar readdir
en un bucle while
.
¿No se ha duplicado esta pregunta de esta? http://stackoverflow.com/questions/1045792/how-can-i-list-all-of-the-files-in-a-directory-with-perl –
@Leonardo Herrera De hecho, lo es. Lo siento, no recuerdo eso. Votando para cerrar. –
No veo cómo es esto un duplicado. La pregunta pregunta cómo recorrer los archivos en un directorio. El marcado 'duplicado' pregunta cómo enumerar todos los archivos en un directorio. Claramente diferente. ¿Por qué marcar como duplicado? – CJ7