Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3116 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1893986
sephiburp
Posté le 11-06-2009 à 09:50:49  profilanswer
 

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 :

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 ?


Message édité par sephiburp le 11-06-2009 à 09:51:33
mood
Publicité
Posté le 11-06-2009 à 09:50:49  profilanswer
 

n°1894088
gilou
Modérateur
Modzilla
Posté le 11-06-2009 à 12:12:57  profilanswer
 

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 :
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4.  
  5. use File::Glob qw(bsd_glob);
  6. my $SOURCE = "C:/Documents and Settings/toto/Desktop/a/*";
  7. my @LISTFIC;
  8.  
  9. foreach (bsd_glob ($SOURCE)) {
  10.    print ": $_ \n";
  11.    if (-f) {push(@LISTFIC,$_);}
  12. }
  13. my $nbfic = scalar(@LISTFIC);
  14. print("\n\n Nombre de fichiers : $nbfic \n" );
 

(Noter qu'en sortie, tes fichiers sont au format unix, avec des séparateurs /. Pour avoir un format a la DOS, avec des séparateurs \, faire: my $SOURCE = 'C:\Documents and Settings\toto\Desktop\a\*';)
A+,


Message édité par gilou le 11-06-2009 à 15:33:27

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1894170
sephiburp
Posté le 11-06-2009 à 14:47:00  profilanswer
 

Nickel !
 
Merci beaucoup.

n°1894233
couak
Posté le 11-06-2009 à 17:33:04  profilanswer
 

tu peux aussi utiliser opendir()


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

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

 

Sujets relatifs
Problème de connection FREE à SQL.FREE.FR ?? Mystère!Problème de paramètre dans ma fonction
[JTable] Probleme AbstractCellEditor[résolu]Problème de vérification d'un entier
[Web] Problème d'affichage de contenuprobleme validation de formulaire javascript
[Débutant][OpenGL ES] Problème affichage texturesProblème fonction mail
Excel 2003, problème avec une boucleprobleme livre d'or
Plus de sujets relatifs à : [PERL] Problème d'espace avec glob()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR