Parcours recursive d'un repertoire & recuperer fichier.txt

Fermé
Fella || Messages postés 1 Date d'inscription lundi 9 décembre 2013 Statut Membre Dernière intervention 9 décembre 2013 - Modifié par pijaku le 12/12/2013 à 11:54
 Fella || - 16 déc. 2013 à 08:59
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";
 
 };
A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 12/12/2013 à 11:57
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
je vous remercie
0