Parcours recursive d'un repertoire & recuperer fichier.txt

-  
 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


 
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
Fella ||
 
je vous remercie
0