OVH Cloud OVH Cloud

fonction system et expression regulière

3 réponses
Avatar
Tof
Question de newby,

je cherche à effectuer la fonction suivante:
system("mv',"*","targetDir);
Mais * n'est pas interprété comme metacaractère mais comme le caractère
*.

Que fait dans ce cas un pro du perl ?

Merci pour le coup de main

christophe

3 réponses

Avatar
Samuel Mouniée
Bonjour,

Tof wrote:
Question de newby,

je cherche à effectuer la fonction suivante:
system("mv',"*","targetDir);
Mais * n'est pas interprété comme metacaractère mais comme le caractère
*.

Que fait dans ce cas un pro du perl ?



use File::Copy;

et un coup de readdir avant.


Merci pour le coup de main

christophe


Padkoa,


.s'nuoM

Avatar
Emmanuel Florac
Dans article ,
disait...

Que fait dans ce cas un pro du perl ?



Sous Unix, c'est toujours le shell qui interprète les méta carctères "*",
"?", , etc. Il faut donc faire appel à un shell, par exemple en
utilisant

`mv * $targetDir`

avec des backquotes.

--
Quis, quid, ubi, quibus auxiliis, cur, quomodo, quando?

Avatar
Jedaï
Emmanuel Florac wrote:

Dans article ,
disait...

Que fait dans ce cas un pro du perl ?




Sous Unix, c'est toujours le shell qui interprète les méta carctères "*",
"?", , etc. Il faut donc faire appel à un shell, par exemple en
utilisant

`mv * $targetDir`

avec des backquotes.



Pour être complet :
tant que tu utilise system ou exec avec un seul argument, Perl délègue
l'exécution au shell local, mais si tu utilise plusieurs arguments, Perl
exécute directement ces commandes, sans utiliser le shell, d'où le fait
que les méta-caractères ne soit pas interprétés.

--
Jedaï