Salut,

Je suis en train d'essayer de faire un script perl pour supprimer les lignes d'un fichier qui finissent par "\n"\r\n .

Ca sera plus clair avec un exemple de la tronche du fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
### UPDATENEW SISN "16"
#TITRE_OUVRAGE#La Littérature maghrébine en langue française.\n
 La littérature maghrébine de langue française : 1 : origines et perspectives..
#AUTEUR_PPP#ARNAUD, Jacqueline
#EDITEUR_COMMERC#Publisud
#EDITEUR_VILLE#Paris
#EDITION_ANNEE#1986
...
Quel logiciel me fait des exports aussi pourris? MINISIS, un truc de gestion de bibliothèque d'un autre temps... Bref.

Faut donc que je détecte les lignes finissant par la chaine de caractère "\n" (j'insiste, la chaine, par le caractère de fin de ligne ), que je supprime ce "\n" et que je recolle la ligne à la ligne précédente...

Je suis développeur PHP (Apache/ZF/Jquery & tout l'battaclant), je veux faire ça en PERL pour la rapidité d'éxecution (le fichier est conséquent), mais je n'y pipe rien.
Le serveur est sous Windows, adios sed...

Bref, une bonne âme pour m'aider à faire marcher / optimiser ce script???
Pour l'instant j'arrive pas a detecté la chaine "\n" (d'ailleurs, le substr est il le moyen le plus rapide?)...
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
 
open(FILE_IN,$ARGV[0]);
my @contenu = <FILE_IN>;
close(FILE_IN);
 
open(FILE_OUT,">$ARGV[0]");
$ligneold = "";
foreach my $ligne (@contenu)
{
    chomp $ligne;
	if(substr($ligne,0,-2) eq "\\n"){
		$ligne =~ s/\\n//g;
                $ligneold = $ligneold.$ligne;
	} else {
		$ligneold = $ligne;
		print FILE_OUT "$ligneold\n";
	}
}
close(FILE_OUT);
Merci!