perl -i script_2.pl *.c
1) ton shell va transformer le *.c en une liste des noms de fichiers .c du répertoire courant, liste passée en argument au script
2) le script perl execute find(\&process_file, $ARGV[0]);
$ARGV[0] est le premier des noms de la liste des noms de fichiers .c du répertoire courant
C'est un nom de fichier, pas un nom de répertoire, ce que le find du script attend, donc il est pas surprenant qu'il aille pas récursivement dans les sous répertoires.
Tu as même de la chance que ça marche pour le répertoire courant.
Dans ton script perl, il faut
- passer le nom du répertoire comme argument au script
- s'il y en a pas de passé, prendre celui du repertoire courant ( use Cwd; my $dir = getcwd;)
- verifier que le fichier est bien un fichier et que son nom est en *.c, sinon ne rien faire, au début de process_file
faire le changement voulu dans le fichier si c'est OK
Note sur ton expression régulière: si on veut remplacer les 34 par 99, il faut peut être faire attention a ne pas remplacer 345 par 995 par exemple...
A+,
Message édité par gilou le 03-11-2010 à 10:37:23
---------------
There's more than what can be linked! -- Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- No jab ? No job ! -- (╯°□°)╯︵ ┻━┻