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

Programmation et administration système Perl Discussion :

[PERL] Problème d'espace avec glob()


Sujet :

Programmation et administration système Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut [PERL] Problème d'espace avec glob()
    Bonjour,

    J'utilise la fonction glob() pour lister le contenu d'un répertoire.
    Mais si il y a un espace dans le chemin alors c'est "découpé".

    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    use strict;
    use warnings;
     
    my $SOURCE = "C:/Documents and Settings/toto/Desktop/a/*";
    my @LISTFIC;
     
     foreach (glob ($SOURCE)) {
               print ": $_ \n";
        if (-f) {push(@LISTFIC,$_);}
     }
     my $nbfic = scalar(@LISTFIC);
     print("\n\n Nombre de fichiers : $nbfic \n" );

    Résultat :
    : C:/Documents
    : and


    Nombre de fichiers : 0

    Le chemin "C:/Documents and Settings/toto/Desktop/a/*" est considéré comme 3 entrées différentes à cause des espaces.
    Comment remédier à ça ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Deux solutions (au moins) :
    - quote les parties avec des espaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $SOURCE = qq(C:/"Documents and Settings"/toto/Desktop/a/*);
    - antislash les espaces (l'antislash doit apparaitre dans la chaine, donc il faut un double anti-slash) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $SOURCE = "C:/Documents\\ and\\ Settings/toto/Desktop/a/*";
    Les deux solutions ont été testées sous WinXP/Cygwin

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci pour ton aide.

    Finalement, on m'a proposé une solution pas mal :

    il faut utiliser la fonction bsd_glob de File::Glob au lieu de CORE::glob qui a ce comportement connu.
    Un truc comme ça devrait le faire
    Code perl : 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 warnings;
    use strict;
     
    use File::Glob qw(bsd_glob);
    my $SOURCE = "C:/Documents and Settings/toto/Desktop/a/*";
    my @LISTFIC;
     
    foreach (bsd_glob ($SOURCE)) {
        print ": $_ \n";
        if (-f) {push(@LISTFIC,$_);}
    }
    my $nbfic = scalar(@LISTFIC);
    print("\n\n Nombre de fichiers : $nbfic \n" );

Discussions similaires

  1. Problème d'espace avec une zone de texte
    Par med7sassi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 23/03/2010, 11h40
  2. Problème d'espace avec lien sur image
    Par kanabzh29 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 07/06/2009, 14h56
  3. Problème d'espace avec DB_RECOVERY_FILE_DEST_SIZE
    Par elharet dans le forum Administration
    Réponses: 1
    Dernier message: 06/04/2009, 18h59
  4. Problème d'espace avec unset et array_search
    Par Gunner4902 dans le forum Langage
    Réponses: 2
    Dernier message: 22/07/2008, 10h30
  5. [Lancer PERL]problème d'espaces ...
    Par Zep3k!GnO dans le forum Langage
    Réponses: 1
    Dernier message: 20/12/2005, 10h54

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