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

Langage Perl Discussion :

[langage] creation d'arborescence en perl


Sujet :

Langage Perl

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut [langage] creation d'arborescence en perl
    salut,

    J'aurai aimé savoir si il etait possible de creer des arborescence de fichier en perl ?


    Merci

  2. #2
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    c'est à dire ?
    qu'entends-tu par arborescence de fichier ?
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    une chose dans ce genre

    A
    --B
    --C
    ----D
    ----E
    F
    G
    --H

  4. #4
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    je suis sur qu'il doit y avoir des modules qui font ça mais sinon tu peux t'inspirer d'un truc comme ça :
    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
     
    sub list_dir {
       local ($path_from) = @_;
       $path_from =~ s$//$/$g;
       local (*DIR);
       opendir( DIR, "$path_from" ) || die "Impossible d'ouvrir le répertoire $path_from\nErreur: $!";
     
       while ( $entry = readdir( DIR ) ) {
          $type = ( -d "$path_from/$entry" ) ? "dir" : "file"; 
          if ( ($type eq "dir") && ($entry ne "..") && ($entry ne ".") ) {
             print "- Dossier : $entry\n";
             &list_dir("$path_from/$entry");
          }
          if ( ( $type eq "file" ) && ($entry ne "..") ) {
             print "- Fichier : $entry\n";
          }
       }
       closedir( DIR );
       return;
    }
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  5. #5
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Il y a aussi la fonction mkdir qui peut te servir pour créer des répertoires
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  6. #6
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Bonjour,

    Citation Envoyé par donny
    J'aurai aimé savoir si il etait possible de creer des arborescence de fichier en perl ?


    J'ai deux façons de comprendre ta question ...

    Veux-tu créer une arborescence (affichage) des fichiers (déjà existants), ou bien veux-tu créer les fichiers d'une liste de données représentant l'arborescence à créer ?

    Dans le premier cas, une fonction d'affichage, récursive, avec des opendir/readdir/closedir et une précision du niveau de profondeur atteint est très facile à mettre en place.

    Dans le second cas, il est important de choisir une bonne structure de données pour stocker la liste de fichier/répertoires à créer, et ensuite, c'est très facile à coup de mkdir.

    Bon courage.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    en faite pour creer une arborescence il existe ce module :je l'ai utiliser et j'ai fait cela


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/perl
     
    use File::Path;
     
    mkpath(['/D/d1/d2', 'C/c1/c2'], 1);
    le probleme est qu'il me creer 'C/c1/c2' dans le repertoire à partir duquel j'appel mon script mais il creer cela '/D/d1/d2' à la racine dans mon C:
    ???

    je en comprend pas

  8. #8
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    c'est normal c'est ce que tu lui demandes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mkpath(['/D/d1/d2', 'C/c1/c2'], 1);
    /D/d1/d2 est un chemin absolu partant de la racinne du disque (avec le /en premier)
    C/c1/c2 est un chmein relatif donc partant de ton répertoire de travail (sans / au début)
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    arffffffffff
    j'avais pas vu
    merci
    et si je souhaite creer cettre arborescence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
    home
        dev1 test
        dev2 file1
               file2
    en faite cela
    mkdir home
    mkdir home/dev1
    mkdir home/dev1/test
    mkdir home/dev2
    mkdir home/dev2/file1
    mkdir home/dev2/file2
    je suis obliger d'indiquer le chemin complet à chaque fois et donc faire des repetitions ??
    comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/perl
     
    use File::Path;
     
    mkpath(['home/dev1/test', 'home/dev2/file1','home/dev2/file2'], 1);
    merci

  10. #10
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    rien ne t'empêche de te construire une méthode qui définit un chemin de base et des chemins relatifs :

    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
    #!/usr/bin/perl
     
    use File::Path;
     
    sub mymkpath
    {
        my ($rootdir, $subdirs) = @_;
        my @absolutedirs = map { $rootdir . '/' . $_ } @$subdirs;
        mkpath(\@absolutedirs , 1);
    }
     
    mymkpath('/home', ['dev1/test', 'dev2/file1', 'dev2/file2']);
    # ou alors
    mymkpath('/home', ['dev1/test']);
    mymkpath('/home/dev2', [ 'file1', 'file2']);

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

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  11. #11
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    et donc si je le fait à ma maniere synthaxiquement c'est correct ?

  12. #12
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Si ca compile et que ca fonctionne, oui

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

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  13. #13
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    j'ai tester sa fonctionne
    comme je ne trouvais pas d'exemple de cours sur le net
    je voulais etre sur que sa posai pas de probleme ou qu'il existait pas une option lorsqu'on creer des repertoire qui on le meme chemin

Discussions similaires

  1. [langage] Renseignement pour débuter sur perl
    Par freeshman dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 23h47
  2. [langage] Création de variable d'environnements
    Par Smaugg dans le forum Langage
    Réponses: 20
    Dernier message: 26/04/2004, 09h32
  3. [langage] Recherche d'un editeur Perl (freeware)
    Par marouanitos dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2003, 08h17
  4. Réponses: 3
    Dernier message: 28/07/2003, 22h01
  5. [langage] Création de dossier en chemin absolu
    Par Jibees dans le forum Langage
    Réponses: 4
    Dernier message: 25/04/2003, 10h57

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