È possibile utilizzare readdir o glob.
In alternativa, è possibile utilizzare un modulo come ad esempio Path::Class:
Ordinariamente children()
non includere le voci indipendenti e genitore. e .. (o i loro equivalenti su sistemi non Unix), perché è come se fossi un mio nonno. Se si vuole tutte le voci della rubrica telefonica tra questi quelli speciali, passare un vero valore per il parametro all:
@c = $dir->children(); # Just the children
@c = $dir->children(all => 1); # All entries
Inoltre, c'è un parametro no_hidden che escluderà tutte le voci normalmente "nascosti" - su Unix questo significa esclusione tutte le voci che iniziano con un punto (.
):
@c = $dir->children(no_hidden => 1); # Just normally-visible entries
Oppure, Path::Tiny:
@paths = path("/tmp")->children;
@paths = path("/tmp")->children(qr/\.txt$/);
Restituisce un elenco di oggetti Path::Tiny
per tutti i file e le directory in una directory. Esclude "."
e ".."
automaticamente.
Se viene fornito un argomento opzionale qr//
, restituisce solo oggetti per nomi figlio che corrispondono all'espressione regolare specificata. il nome di base viene utilizzato solo per la corrispondenza:
@paths = path("/tmp")->children(qr/^foo/);
# matches children like the glob foo*
Ottenere l'elenco delle voci di directory in un array rifiuti po 'di memoria (invece di ottenere nome di un file alla volta), ma con solo poche centinaia di file , è improbabile che questo sia un problema.
Path::Class
è portatile per sistemi operativi diversi da * nix e Windows. D'altra parte, AFAIK, le sue istanze utilizzano più memoria delle istanze Path::Tiny
.
Se la memoria è un problema, è meglio usare readdir
in un ciclo while
.
Questa domanda non è una copia di questa? http://stackoverflow.com/questions/1045792/how-can-i-list-all-of-the-files-in-a-directory-with-perl –
@Leonardo Herrera Infatti, lo è. Scusa, non me lo ricordavo. Voto per chiudere. –
Non vedo come questo è un duplicato. La domanda chiede come eseguire il loop dei file in una directory. Il 'duplicato' contrassegnato chiede come elencare tutti i file in una directory. Chiaramente diverso. Perché contrassegnare come duplicato? – CJ7