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] Arboresence du disque!


Sujet :

Langage Perl

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Par défaut [langage] Arboresence du disque!
    Salut! Je debute en perl et j'aurais voulu créer un script qui m'affiche l'arborescence de mon disque. (je suis sous tux)
    J'ai déja réussi a faire afficher tout ce qui se trouve dans un dossier mais pas a continuer cela! Sauf erreur, il faut utiliser le fonction recurente?!? Mais je n'ai pas trop compris comment m'y prendre! Voila ce que j'ai deja tenter de 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #!/usr/bin/perl
    $valeur = "/home/jerome/*";
    #debut de la fonction
    sub scan{
            $compteur = 1;
            @tableau = glob "$valeur";
            foreach $trouve (@tableau){
                    #si c'est un fichier
                    if(-f $trouve) {
                            #on compte le nombre de fois que la fonction a deja ete utilisee
                            my $compteur2 = 0;
                            while($compteur2 < $compteur){
                                    print "----";
                                    $compteur2++;
                            }
                            #et on affiche le fichier
                            print ">$trouve\n";
                    }
                    #Par contre si c'est un dossier
                    elsif(-d $trouve) {
                            #on enleve le retour a la ligne
                            chomp $trouve;
                            $valeur = "$trouve/*";
                            my $compteur2  = 0;
                            #on compte le nombre de fois que la boucle a ete utilisee
                            while($compteur2 < $compteur){
                                    print "----";
                                    $compteur2++;
                            }
                            #et on affiche le dossier
                            print ">$trouve\n";
                            #et on rappelle la fonction
                            &
                    }
            }
            #on increment le compteur
            $compteur++;
    }
    &
    Voila si qqn pourrait m'aider!? Merci d'avance!!!

  2. #2
    Membre émérite
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Par défaut
    Bonjour,

    Voici une methode en recursif :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #! /usr/bin/perl -w
     
    use strict;
     
    $| = 1;
    my $valeur = "/usr";
    #debut de la fonction
     
    sub scan {
            my ($rep, $compteur) = @_;
            my @tabl_rep = ();
     
            print "REPERTOIRE ---> $rep\n";
            opendir(DIR, $rep) or print "can't opendir $rep: $!\n" and return;
            # Cette boucle va afficher le contenu du repertoire
            # Les repertoires sont stockes dans un tableau pour ne pas reparcourir le repertoire (gain de temps).
            while (my $trouve = readdir(DIR)) {
                    # On ne rpend pas en compte les fichiers . et ..
                    next if ($trouve eq "." || $trouve eq "..");
                    my $total_path = "$rep/$trouve";
                    push @tabl_rep, $total_path if (-d $total_path);
                    my $compteur2 = 0;
                    while ($compteur2 < $compteur ) {
                           print "----";
                           $compteur2++;
                    }
                    print ">$trouve\n";
            }
            closedir(DIR);
             # On parcours le tableau contenant les repertoires puis on apelle scan avec ce nouveau repertoire. ($compteur + 1 pour l'indentation)
            foreach (@tabl_rep) {
                scan($_, $compteur + 1);
            }
    }
     
    scan $valeur, 0;
    Bon l'indentation n'est pas superbe. je te laisse l'ameliorer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Par défaut
    Ouai ca fonctionne tres tres bien!! merci infiniment!!!

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

Discussions similaires

  1. Arboresence audio : quel langage chosir ?
    Par Imadus dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 18/11/2010, 13h07
  2. [langage] comment écouter l'accès d'un disque dur
    Par Invité1 dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2006, 13h47
  3. [langage] Je cherche un bon livre ?
    Par Anonymous dans le forum Langage
    Réponses: 13
    Dernier message: 09/04/2003, 13h16
  4. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37
  5. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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