Dans ce cas, je te conseille dans un 1° temps de lire le fichier en mode read, tu places tout le contenu dans une chaine de caractère, tu traites le tout avec tes regexp, et à la fin tu ouvres à nouveau le fichier mais en mode écriture, et tu y écris la chaine que tu viens de modifier...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #!/usr/bin/perl -w use strict; use File::Find; finddepth(\&test, qw(D:/test)); sub test { if( $_ eq "blabla.js" ) { &modify("${File::Find::dir}/$_"); } } sub modify($) { my ($file) = @_; my $content = ""; # read : on lit le fichier, on modifie les lignes, et on stocke en mémoire open (FILE, $file) || die("impossible d'ouvrir le fichier $file"); while(my $line = <FILE>) { # traitement de la ligne. ex: ici on remplace les "a" par des "z" $line =~ s/a/z/g; # stockage en mémoire $content .= $line; } close(FILE); # write : on réécrit le fichier intégralement ! open (FILE, ">$file") || die("impossible d'ouvrir le fichier $file en écriture"); print FILE $content; close(FILE); }
Partager