Parcours recursive d'un repertoire & recuperer fichier.txt

Fella || Messages postés 2 Statut Membre -  
 Fella || -
Bonsoir
j écrie un script perl qui parcours un répertoire et les sous répertoires et je veux récupérer les fichiers textes ( j arrive pas a faire cette dernière) je veux introduire une expression régulière pour cela mais apparemment sa ne marche pas
Mon script :

#!/usr/bin/perl
use strict;
use warnings;
use File::Find;

find(\&recherche, '/home/fella/REP');
my $var;

sub recherche {
 $var=$_;
if ($var=~/* .txt/) print "$_\n";
 
 };

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut Fella ||,

    Il y a plusieurs problèmes dans ton code, le principal étant que ta regexp n'est pas bonne. Pour rechercher des noms de fichiers se terminant par ".txt", tu devrais faire :
    /\.txt$/
    .

    Ensuite, il n'est pas nécessaire de créer une variable (de plus globale) pour traiter le résultat capturé dans ta fonction de traitement. Utilise directement
    $_
    , cela allège aussi ton code.

    Le
    ;
    à la fin de l'accolade fermante de ta fonction est aussi redondant.

    Au final, cela donne cela (avec une recherche insensible à la case permettant de trouver des extensions .TXT, comme .txt) et l'indication du répertoire :

    #!/usr/bin/perl
    use strict;
    use warnings;
    use File::Find;
    
    find(\&recherche, '/home/fella/REP');
    
    sub recherche
    {
        if (/\.txt$/i)
        {
            print "$_ found in $File::Find::dir\n";
        }
    }
    


    Dal
    1
    1. Fella ||
       
      je vous remercie
      0