regexp avec caractres spéciaux [PERL] - Perl - Programmation
Marsh Posté le 29-09-2006 à 11:46:06
Bonjour,
soit il manque une info intéressante non montrée ici de ton code, soit je vois 2 erreurs :
s/$file/$newfile/;
1) Où est la variable $newfile ?
2) Telle quelle, ta syntaxe applique le remplacement sur la variable $_
Marsh Posté le 29-09-2006 à 11:54:23
Merci pour ta réponse
Oui en effet j'ai pas mis tout le code juste la chaine a remplacer et la chaine sensément remplacée.
Le script en entier:
Code :
|
et le script myrename:
Code :
|
(tout ça pour renommer récursivement snif)
avec
Code :
|
$newfile replace bien toute la chaine précédente mais du coup je perd le répertoire et il me renome tout dans le répertoire courant
(par exemple
toto/tata/titi espace.txt
devient
titi_expace.txt
au lieu de
toto/tata/titi_espace.txt
)
ca m'énerve de pas comprend les regexp !
Merci!
Marsh Posté le 30-09-2006 à 01:57:35
Bon je reformule ma question
comment fait on pour "protéger" une string ?
c'est à dire je veux que
$toto="blablabla[pouet]_(slupr)";
devienne
$toto="blablabla\[pouet\]_\(slupr\)";
pour pas que mes caracters soient interpretés par mes regexp
Merci!
Marsh Posté le 30-09-2006 à 02:11:35
Bon, voilà!
suffisait que j'expose clairement mon problème, n'y pense plus pendant une journée, et j'ai trouvé la solution ! (c'est tout couillon en fait comme je le pensais)
Il suffit faire un "quotemeta" sur la chaine !
Au final ca me donne ça :
Code :
|
Merci à vous
Marsh Posté le 29-09-2006 à 08:55:37
Bonjour à tous!
j'ai un petit problème stupide:
j'ai une substitution qui ne veut pas fonctionner lorsque j'ai des "caracteres spéciaux" dans la chaine.
visiblement, à cause du "[", il ne trouve pas la chaine dans $file ...
et n'étant pas un pro de la regexp je ne sias pas trop comment "protéger" les caractères spéciaux...
Si qqn à une idée,...