Hello
Voici mon probleme:
J'ai mon fichier source qui ressemble à ca:
et mon fichier destination:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 {SndEventE:(MATHIEU) SetName("DEL_Play_Og_Beo_Eff_Medium") SetMachin("TRUE") SetParam1(201_Beowulf_Efforts.csb^SndResourceE:9) SetReverb("TRUE") SetBalance("TRUE") SetTruc("TRUE") SetVersion(18) }
Ceci n'est qu'un exemple simple, car ces fichiers peuvent contenir plusieurs blocs de ce genre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 {SndEventE:(MATHIEU) SetName("DEL_Play_Og_Beo_Eff_Medium") SetParam1(201_Beowulf_Efforts.csb^SndResourceE:9) SetReverb("TRUE") SetBalance("TRUE") SetVersion(18) }
Je souhaiterais donc remplacer les blocs se trouvant dans destination par les blocs de meme noms se trouvant dans source.
Pour cela j'ai fait ce code tout bâteau:
Le probleme est que quand j'affiche $temp, bah rien n'a été remplacé.
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 # recupere dans $temp le fichier destination open DEST, "<$_file"; while($line = <DEST>) { $temp = $temp . $line; } close DEST; # recupere dans $temp2 le bloc de source que je voudrais remplacer dans destination foreach $b(@_block) { $temp2 = $temp2 . $b; } # $_blockTitle contient le titre du bloc (la premiere ligne en l'occurence) $_blockTitle = quotemeta($_blockTitle) ; # et là je fais le switch qui consiste à remplacer tout ce qui se trouve entre la premiere ligne (celle-ci comprise) et le dernier backslash trouvé $temp =~ s/^$_blockTitle.*\}/$temp2/; print "$temp";
Si vous avez une idée... merci
Mat'
Partager