Bonjour,
j'ai un problème difficilement compréencible : j'ai une petite fonction qui me sert à remplacer une chaine par une autre dans un text. Cette fonction marche très bien dans tout un tas de scripts que j'ai écrit... Sauf dans le dernier.
resultat :
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 sub remplacerLaChaineMatchee { if (@_ == 2) { my $chaineDOrigine = @_[0] ; my $chaineTransforme = @_[1] ; print ("\nchaineDOrigine = ".$chaineDOrigine."\n") ; print ("chaineTransforme = ".$chaineTransforme."\n") ; # on prefixe tous les caractaitres speciaux par \ $chaineDOrigine = quotemeta($chaineDOrigine); # on remplace toutes les occurence de cette chaine print (" =~ s|$chaineDOrigine|$chaineTransforme|gm ;\n") ; $txtRes =~ s|$chaineDOrigine|$chaineTransforme|gm ; } else { die ("\nLa methode remplacerLaChaineMatchee prend 2 arguments." ."\nElle à était appelée avec ".@_." argument(s).") ; } }
Jusque là on pourait penser que ça va marcher...
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 chaineDOrigine = REM chaineTransforme = /*REM*/ =~ s|REM|/*REM*/|gm ; chaineDOrigine = REM Infos SCCS : %W% %G% chaineTransforme = /*REM Infos SCCS : %W% %G%*/ =~ s|REM\ Infos\ SCCS\ \:\ \%W\%\ \%G\%|/*REM Infos SCCS : %W% %G%*/|gm ; chaineDOrigine = REM AnaisTransferCreateTables.sql chaineTransforme = /*REM AnaisTransferCreateTables.sql*/ =~ s|REM\ AnaisTransferCreateTables\.sql|/*REM AnaisTransferCreateTables.sql*/|gm ; chaineDOrigine = REM Creation of transfer tables: chaineTransforme = /*REM Creation of transfer tables:*/ =~ s|REM\ Creation\ of\ transfer\ tables\:|/*REM Creation of transfer tables:*/|gm ; chaineDOrigine = REM **************************************************************************** chaineTransforme = /*REM *****************************************************************************/ =~ s|REM\ \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*|/*REM *****************************************************************************/|gm ;
Et ben non : dans le fichier résultat j'ai systèmatiquement
Code : Sélectionner tout - Visualiser dans une fenêtre à part /*REM*/ la suite de la ligne
Si quelqu'un comprend...
++floanne
Partager