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
Et bien, bien que cela puisse etre etrange, j'ai bien des "erreur : $_ inexistant" qui s'affiche.
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; }
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" :
Il me trouve 2 fichiers : "in/Civil-Military" et "Relation", qui bien entendu n'existe pas.fichiers trouves : in/Civil-Military:Relation
erreur : in/Civil-Military inexistant
erreur : Relation inexistant
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?
Partager