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 :

espace dans les glob sous Windows


Sujet :

Langage Perl

  1. #1
    Membre averti Avatar de SYL666
    Inscrit en
    Novembre 2003
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 308
    Points : 411
    Points
    411
    Par défaut espace dans les glob sous Windows
    Bonjour,
    Je rencontre un "petit" (gros en fait) soucis sous perl Windows (activeperl 5.8.8) avec glob() (idem pour <>) :
    il se trompe sur les repertoire (et uniquement sur les rep, pas les fichiers) contenant des espaces.

    Je dois faire un traitement sur chacun des fichiers d'un repertoire, avec une recursion si le fichier est un repertoire

    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
    sub convertDir {
    my $baseDir = @_[0];
    my @files = glob("$baseDir/*");
    printf("fichiers trouves : %s\n", join(':', @files));
    foreach(@files) {
    	if (-d $_) {		
    		convertDir($_);
    	} elsif (-e $_) {
    		convert($_);
    	}else {
    		print("erreur : $_ inexistant\n");
    	}
    }
    return $convertErr;
    }
    Et bien, bien que cela puisse etre etrange, j'ai bien des "erreur : $_ inexistant" qui s'affiche.
    Exemple
    voici ce que j'ai, pour un repertoire "in\Civil-Military Relation Ind-Pak2" contenant 9 fichiers, sans sous-repertoire et je lance la fonction sur le repertoire "in" :
    fichiers trouves : in/Civil-Military:Relation
    erreur : in/Civil-Military inexistant
    erreur : Relation inexistant
    Il me trouve 2 fichiers : "in/Civil-Military" et "Relation", qui bien entendu n'existe pas.

    Le programme marche sans aucaun soucis s'il n'y a pas d'espace dans les nom de repertoire. Ca marche pire encore si je remplace les "/" par les "\" windows (doubles pour ne pas les confondre avec les \ procteurs)

    Que passa?
    The Big Bang theory : In the beginning there was nothing, and it exploded. (Terry Pratchett)

    IT Quote : "Unix is user-friendly. It's just very selective about who its friends are."

  2. #2
    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
    Et juste pour voir, si l'on protège les " " avec un quotemeta ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sub convertDir {
    my $baseDir = quotemeta (@_[0]);
    my @files = glob("$baseDir/*");
    printf("fichiers trouves : %s\n", join(':', @files));
    ...
    return $convertErr;
    }
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    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
    as tu essayé avec opendir et readdir pour voir si tu avais le même pb ?
    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

  4. #4
    Membre averti Avatar de SYL666
    Inscrit en
    Novembre 2003
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 308
    Points : 411
    Points
    411
    Par défaut
    et zou! un post resolu 1!

    Merci 2Eurocents!
    Le quotemeta m'a en effet resolu ce soucis. J'aurai du y penser... je ferai mieux la prochaine fois
    The Big Bang theory : In the beginning there was nothing, and it exploded. (Terry Pratchett)

    IT Quote : "Unix is user-friendly. It's just very selective about who its friends are."

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

Discussions similaires

  1. Problème d'espace dans les varibles passées par GET !
    Par boukay dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/03/2006, 14h36
  2. Smbclient et espace dans les noms
    Par jean-jacques varvenne dans le forum Réseau
    Réponses: 4
    Dernier message: 30/11/2005, 18h29
  3. Interdire le Clic Droit dans une appli sous windows XP
    Par new-gate dans le forum Windows
    Réponses: 10
    Dernier message: 03/11/2005, 23h37
  4. Menu CSS vertical, petit espace entre les images sous IE
    Par Death83 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/10/2005, 09h52
  5. Les interruptions sous Windows et Linux
    Par Descartes dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 07/06/2003, 22h42

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