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 :

compter des fichiers


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Par défaut compter des fichiers
    Je souhaiterai lister les fichiers xml d'un repertoire. Et si le nombre de ces fichiers est supérieur à 1, alors on renvoie un message d'erreur. Donc 1 fichier, on dit que c'est bon, par contre 2, 3 ou plus : c'est pas bon.

    j'ai commencé par faire :
    @ListeFiles= glob ("MonRepertoire/*.xml") ;

    mais aprés j'ai un peu de mal.

    merci pour votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Je n'ai pas testé ton code mais voici ce que j'apporte pour ton test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @ListeFiles= glob ("MonRepertoire/*.xml") ;
    if (scalar(@ListeFiles) == 1)
    {
        # on est bon là, 1 seul xml trouvé
    }
    else
    {
        # pas good ici
    }

  3. #3
    Membre confirmé

    Inscrit en
    Janvier 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 188
    Par défaut
    j'connais pas scalar.
    $#ListeFiles te donne le numéros du dernier élément du tableau
    => $#ListeFiles + 1 te donne la nombre d'élément
    bref, tu peux faire 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
     
    @ListeFiles= glob ("MonRepertoire/*.xml") ;
    if ($#ListeFiles) == 0){
     
        # on est bon là, 1 seul xml trouvé
     
    }
    else{
     
        # pas good ici 
        # ( - aucun xml trouvé $#ListeFiles vaut -1
        #   - plusieurs (N > 1) xml trouvés $#ListeFiles vaut N-1 )
     
    }

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    scalar permet de s'assurer que quelquechose sera interprété en contexte scalaire.

    Et justement, une liste (ou tableau), interprétée en contexte scalaire, retourne le nombre de ses éléments.

    Souvent, dans les tests, cette "conversion" par scalar est superflue.

    En résumé :
    • @liste retourne (en contexte scalaire) le nombre d'éléments de la liste
    • $#liste retourne le dernier index utilisé ...

    Ca laisse le choix.

  5. #5
    Membre expérimenté
    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
    Par défaut
    Salut,
    Citation Envoyé par 2Eurocents
    Et justement, une liste (ou tableau), interprétée en contexte scalaire, retourne le nombre de ses éléments.
    Pas toute à fait. Pour les tableaux oui, mais pas pour les listes.

    Une liste évaluée dans un contexte scalaire rétourne le dernière élément de la liste et pas le nombre d'éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    debian:~# perl -e '$l = (a,b,c);@t='a'..'z';$ll=@t;print "la liste contient $l éléments\net le tableau contient $ll éléments\n"'
    la liste contient c éléments
    et le tableau contient 26 éléments
    En revanche l'affectation d'une liste dans un contexte scalaire retourne le nombre d'éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    debian:~# perl -e '$l=( ($aa,$bb) = (a,b,c) );print "le nombre éléments affectés est $l\n"'
    le nombre éléments affectés est 3
    debian:~#
    lami20j

  6. #6
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par Arioch
    Je n'ai pas testé ton code mais voici ce que j'apporte pour ton test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @ListeFiles= glob ("MonRepertoire/*.xml") ;
    if (scalar(@ListeFiles) == 1)
    {
        # on est bon là, 1 seul xml trouvé
    }
    else
    {
        # pas good ici
    }
    Le scalar n'est pas nécessaire (nous sommes déjà en contexte scalaire puisqu'on teste une égalité numérique) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @ListeFiles= glob ("MonRepertoire/*.xml") ;
    if ( @ListeFiles == 1)
    {
        # on est bon là, 1 seul xml trouvé
    }
    else
    {
        # pas good ici
    }
    --
    Jedaï

Discussions similaires

  1. [XL-2007] MACRO pour compter le nombre des fichiers sur le serveur FTP
    Par kinkichin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/07/2011, 18h09
  2. [XL-2002] Compter des fichiers dans un répertoire windows
    Par micka06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/09/2010, 14h54
  3. Compter des fichiers.
    Par kluh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/09/2008, 20h43
  4. Réponses: 4
    Dernier message: 09/07/2008, 09h43
  5. Réponses: 2
    Dernier message: 06/11/2005, 23h38

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