OVH Cloud OVH Cloud

\ et manips de chemins windows

6 réponses
Avatar
cross
Salut,

c'est con, tres con
j'ai des chemins windows qui m'arrivent sous la forme
$dir="c:\tmp\toto";
et je veux remplacer par
$dir="c:\\tmp\\toto";

mais je n'arrive absolument pas à rajouter des slashs

Comment faire ? et puis il y pas des fonctions pour maniper les chemins
en general ?

merci de votre aide

PS:frappez pas...mais le coup de RTFM m'a deja fais disjoncter le pov
debutant ke ye souis à cette heure.

6 réponses

Avatar
Emmanuel Florac
Le Thu, 03 Nov 2005 21:37:33 +0100, cross a écrit :


mais je n'arrive absolument pas à rajouter des slashs

Comment faire ? et puis il y pas des fonctions pour maniper les chemins en
general ?


Utilise le slash / et non pas l'antislash .

my $chemin="c:/toto/titi/tata" ;

marche très bien et est bien plus simple à manipuler.

--
Le travail est la malédiction des classes qui boivent.
O. Wilde.

Avatar
Noshi
On Thu, 03 Nov 2005 21:37:33 +0100, cross wrote:

Salut,

c'est con, tres con
j'ai des chemins windows qui m'arrivent sous la forme
$dir="c:tmptoto";
et je veux remplacer par
$dir="c:tmptoto";


essaye un truc du genre :

$dir =~ s//\/g;

ca remplace par dans la variable $dir

mais je n'arrive absolument pas à rajouter des slashs

Comment faire ? et puis il y pas des fonctions pour maniper les chemins
en general ?

merci de votre aide

PS:frappez pas...mais le coup de RTFM m'a deja fais disjoncter le pov
debutant ke ye souis à cette heure.


ben pourtant ;) lire l'aide sur les expressions régulières te donnerait
plein d'info.

A++

--
Noshi

Avatar
cross
On Thu, 03 Nov 2005 21:37:33 +0100, cross wrote:


Salut,

c'est con, tres con
j'ai des chemins windows qui m'arrivent sous la forme
$dir="c:tmptoto";
et je veux remplacer par
$dir="c:tmptoto";



essaye un truc du genre :

$dir =~ s//\/g;
oui helasss non justement j'avais essaye deja...mais ke nini (ou mon

perl maime pu)
j'ai essaye de comprendre les quotemeta...mais fausse piste,
avec ces interpolations ca me mange le t de tmp et toto
==> mp oto bref...je pleure.
je veux bien bosser avec des / mais comment les avoir tout est la
A la source c'est bien une recup de chemins windows
donc a la source faut remonter.

je vais certaiement faire du opendir/readdir, pour "recomposer" ces
chemins avec des slashes /, ca sera plus long, je pensais trouver
kkechose de plus rapide, suis deçu pas les RegEx.


merci qd meme


Avatar
Jacques Caron
Salut,

On Fri, 04 Nov 2005 07:33:17 +0100, cross wrote:

$dir="c:tmptoto";




Euh, si tu as ça directement dans ton source, il faut bien comprendre que
t sera interprété comme un tab, pas comme un suivi d'un t. Si tu veux
que t ne soit pas interprété comme un tab, utilise des quotes "simples"
('):

$dir='c:tmptoto';

Alternativement, utilise / au lieu de .

Bien entendu c'est différent si c'est une saisie ou une lecture depuis un
fichier et pas quelque chose qui est directement dans le corps du
programme.

et je veux remplacer par
avec ces interpolations ca me mange le t de tmp et toto


==> mp oto bref...je pleure.


Les tabs je comprends (voir plus haut), les suivis de tabs j'ai du mal à
comprendre comment tu es arrivé à ça...

A la source c'est bien une recup de chemins windows
donc a la source faut remonter.


Donc, d'où viennent des chemins? En dur dans le soft, ou autre chose?

je vais certaiement faire du opendir/readdir, pour "recomposer" ces
chemins avec des slashes /, ca sera plus long, je pensais trouver
kkechose de plus rapide, suis deçu pas les RegEx.


Je crois que ce n'est pas un problème de regex (tu peux tout faire ou
presque avec), mais bien de compréhension de l'interpolation des chaînes.
Voir man perlop pour les détails.

Jacques.
--
Oxado http://www.oxado.com/



Avatar
Jean-Marc FRIGERIO
cross wrote:

Salut,

c'est con, tres con
j'ai des chemins windows qui m'arrivent sous la forme
$dir="c:tmptoto";
et je veux remplacer par
$dir="c:tmptoto";

mais je n'arrive absolument pas à rajouter des slashs

Comment faire ? et puis il y pas des fonctions pour maniper les chemins
en general ?

merci de votre aide

PS:frappez pas...mais le coup de RTFM m'a deja fais disjoncter le pov
debutant ke ye souis à cette heure.


Salut,

use File::Spec ... avant de le ré-écrire


-- Jean-Marc

Avatar
cross
Salut,

On Fri, 04 Nov 2005 07:33:17 +0100, cross wrote:

$dir="c:tmptoto";





Euh, si tu as ça directement dans ton source, il faut bien comprendre
que t sera interprété comme un tab, pas comme un suivi d'un t. Si tu
veux que t ne soit pas interprété comme un tab, utilise des quotes
"simples" ('):

$dir='c:tmptoto';

Alternativement, utilise / au lieu de .

Bien entendu c'est différent si c'est une saisie ou une lecture depuis
un fichier et pas quelque chose qui est directement dans le corps du
programme.

et je veux remplacer par



avec ces interpolations ca me mange le t de tmp et toto
==> mp oto bref...je pleure.



Les tabs je comprends (voir plus haut), les suivis de tabs j'ai du mal
à comprendre comment tu es arrivé à ça...

A la source c'est bien une recup de chemins windows
donc a la source faut remonter.



Donc, d'où viennent des chemins? En dur dans le soft, ou autre chose?

je vais certaiement faire du opendir/readdir, pour "recomposer" ces
chemins avec des slashes /, ca sera plus long, je pensais trouver
kkechose de plus rapide, suis deçu pas les RegEx.



Je crois que ce n'est pas un problème de regex (tu peux tout faire ou
presque avec), mais bien de compréhension de l'interpolation des
chaînes. Voir man perlop pour les détails.


et oui et oui, interpolation comme tu dis
donc changer ca à la source vous dis je, transformer mon tableau de
chemins,(c'est kkchose les foncions des modules File::*), et puis les
quotes ca le fait aussi

bref..heu parlé trop vite, perl et ses regexp et modules c'est puissant
mais si on est pas intelligent il pourra pas l'etre pour nous
ben ca me promet bien des choses

bon merci en tout cas.

C.