j'ecris un script en perl, et j'aimerai pouvoir modifier des lignes dans un fichier.J'enregistre le debut du fichier dans un tableau @debut_fichier, et la fin avec @fin_fichier. Mon script commence à ecrire @debut_fichier, puis me demande de taper ma nouvelle, $n, ligne, puis écris la fin du fichier.
Lorsque le script réecrit mon fichier, à la fin, il m'ajoute des élements de manière aleatoire, ce qui fait que mon fichier n'est plus "lisible", c'est a dire qu'il ne correspond pas à ce que je voudrais qu'il soit. Alors je me demande si c'est pas un probleme de tampon ou quelque chose dans le genre...
Voici mon script :
#!/usr/bin/perl
use warnings;
use strict;
#### Modifier la ligne $nb_ligne du fichier ####
my $a=0;
my $fichier;
my $nb_ligne;
my $prompt;
my $nb_ligne_modif = 0;
my @array;
my $nb_modif = 0;
my $fin;
# Ecrire ce qu'il y avait avant dans le fichier
foreach ( @debut_fichier ) {
print FH $_;
$a++;
}
# Ecrire la nouvelle ligne dans le fichier
for ( $x=0; $x<=3; $x++ ) {
push @ligne_fich, nouvelle_donnee($x);
}
push @ligne_fich, "\n";
print FH @ligne_fich;
$a++;
#Ecrire les dernieres lignes dans le fichier
foreach ( @fin_fichier ) {
print FH $_ ;
$a++;
}
# TEST
foreach ( @fin_fichier ) { print $_; }
$nb_modif++;
}
# main :
do {
open (FH, "+< data.txt") or die $!;
$nb_ligne = lecture_fichier();
print "Le fichier contient $nb_ligne lignes\n";
ask "no de la ligne a modif ?";
$nb_ligne_modif = $prompt;
ask "modifier toute la ligne ou un element ?";
modif_ligne($prompt, $nb_ligne_modif);
close(FH);
} until ( $prompt eq "s" );