IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

[File::Find] Renvoyer un tablo


Sujet :

Modules Perl

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut [File::Find] Renvoyer un tablo
    Bonjour

    Je veux utiliser le module File::Find. Mais, dans ma fonction wanted, je veux retourner un tableau. Voici comment je procède :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use File::Find;
     
    no warnings 'File::Find';
     
    my @array;
     
    find(@array = \&wanted, "/home/gldavid");
     
    foreach my $file (@array){
            print $file."\n";
    }
     
    sub wanted{
            my @tablo;
            if(/MonProg/ && -x $_){
                    push(@tablo, $File::Find::name);
            }
            return @tablo;
    }
    Bon, ça marche bien sauf qu'en retour, au lieu de m'afficher les fichiers, il m'affiche :
    mmm, il me semble avoir oublié alors un petit détail sur les références...
    Merci de votre aide.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    ah, c'est marrant car j'ai jeté un coup d'oeil sur ce module y a pas longtemps, mais je ne l'ai jamais utilisé.
    Sinon pour lister les fichiers, je te fais part de ma procédure passe partout.

    Donc ton script ressemblera à ça si tu le souhaites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my @array = &lister_fichiers("/home/gldavid");
     
    foreach my $file (@array){
            print $file."\n";
    }
     
    sub lister_fichiers {
      my $repertoire = shift;
      my @fichiers=();
      opendir (REP, $repertoire) || die "impossible d'ouvrir le repertoire $repertoire";
      my @file_rep = grep { !/^\.\.?$/ } readdir(REP);
      closedir (REP);
      foreach my $nom (@file_rep) {
        if ( -f "$repertoire/$nom") {
          push (@fichiers, "$repertoire/$nom");  
        }elsif ( -d "$repertoire/$nom") {
          push (@fichiers, &lister_fichiers("$repertoire/$nom"));
        }
      }
    return @fichiers;
    }

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Mouarf ! Comme quoi les grands esprits se rencontrent
    Ok, Djib', je prend ta fonction
    Merci à toi

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Voici avec File::Find comment tu pouvais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #!/usr/bin/perl
    use strict;use warnings;
    use File::Find;
    no warnings 'File::Find';
     
    my @tablo;
     
    find(\&wanted, "/home/lami20j/bin");
     
    foreach my $file (@tablo){
      print $file."\n";
    }
     
    sub wanted{
      if( -x $_ ){# les fichiers executables
        push @tablo, $File::Find::name;
      }
    }
    --
    lami20j

  6. #6
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 852
    Points : 4 759
    Points
    4 759
    Par défaut
    Impeccable ! Merci lami20j !!!

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code ni le tag

    Je ne répond à aucune question technique par MP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. File Find et duplication de de nom.
    Par loula427 dans le forum Modules
    Réponses: 10
    Dernier message: 09/12/2010, 22h10
  2. Utilisation du module File::Find
    Par mickael777 dans le forum Modules
    Réponses: 8
    Dernier message: 09/04/2010, 11h30
  3. File::Find wanted et prepocess
    Par cassis2k dans le forum Modules
    Réponses: 9
    Dernier message: 08/07/2009, 16h44
  4. Problème d'utilisation de File::Find
    Par jotape75 dans le forum Modules
    Réponses: 2
    Dernier message: 05/06/2007, 09h51
  5. Probleme de perf avec File::Find::name;
    Par Ludo167 dans le forum Modules
    Réponses: 6
    Dernier message: 14/07/2004, 11h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo