Hello

Voici mon probleme:

J'ai mon fichier source qui ressemble à ca:

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)     
}
et mon fichier destination:
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)     
}
Ceci n'est qu'un exemple simple, car ces fichiers peuvent contenir plusieurs blocs de ce genre.
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:
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";
Le probleme est que quand j'affiche $temp, bah rien n'a été remplacé.

Si vous avez une idée... merci

Mat'