Perl, glob et windows

Voilà mon problème:

Voici bout de script perl:

[code]while (<$REPERTOIRE/*.xml>)
{
open(FICHIER,"$_") || die “tu ne le sais pas encore mais tu es déjà mort :$!”;

fais des trucs cochons avec FICHIER

}[/code]

Le problème est que sous windows, dans le cas où le répertoire est dans “Mes Documents”, le premier élément de la liste est “C:.\Documents” que je soupçonne fortement être le début de “C:.\Documents and Settings…\toto.xml”.

Du coup cannot open file “C:.\Documents”…

On dirait donc qu’il découpe le tableau des fichiers selon les espaces. Quelqu’un a une solution ?

Il y a la solution de faitre un chmod avant, mais je dois après revenir au répertoire courant, et je n’ai pas trouvé l’équivalent de pwd sous windows pour le garder en mémoire.

J’utilise ActivePerl 5.8.6 sous windows, et je veux faire du code portable win/linux, si possible sans modules à installer en plus.

Merci et bon appétit.

C:.\ ??
Que vient faire ce . :stuck_out_tongue:
Et le répertoire mes document ce situe dans:

C:\Documents and Settings\"nom_utilisateur"\Mes documents

Je ne sais pas pourquoi il rajoute un point mais à priori ça n’est pas ça le problème.

Effectivement le repertoire est

et le problème c’est que le premier fichier trouvé est

Mais lorsque je fais un while sur la liste il ne me renvoie dans $_ que ce qu’il y a avant le premier espace.

Mais si je fais

chdir($REPERTOIRE); while(<*.xml>) { open(FICHIER,$_); }

Ca marche. Le problème est qu’il faut que je retourne au réperoire courant après. Sous linux je pourrais faire

mais ça n’est pas portable.

EDIT:
J’ai résolu mon problème en découvrant le module Cwd et getcwd(). Mais ça ne m’explique pas le problème avec la liste de noms de fichiers.