Programmation Perl - Lister récursivement un répertoire


Cette fonction va parcourir tout le contenu d'un répertoire en mode récursif, et renvoyer dans un tableau la liste de tous les fichiers trouvés et leurs chemins.

Le code

#
# GetFilesList - Renvoie la liste des fichiers d'un repertoire (en mode recursif)
#
sub GetFilesList
{
        my $Path = $_[0];
        my $FileFound;
        my @FilesList=();

        # Lecture de la liste des fichiers
        opendir (my $FhRep, $Path)
                or die "Impossible d'ouvrir le repertoire $Path\n";
        my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
        closedir ($FhRep);

        foreach my $FileFound (@Contenu) {
                # Traitement des fichiers
                if ( -f "$Path/$FileFound") {
                        push ( @FilesList, "$Path/$FileFound" );
                }
                # Traitement des repertoires
                elsif ( -d "$Path/$FileFound") {
                        # Boucle pour lancer la recherche en mode recursif
                        push (@FilesList, GetFilesList("$Path/$FileFound") );
                }

        }
        return @FilesList;
}

#
# Boucle principale
#
my @Files = GetFilesList ("/home/jerome/Documents/");
foreach my $File  (@Files) {
	print "$File\n";
}

 

Retour

 Actions

 Langue:
 Flux RSS: