Bonjour,
J'ai un problème avec un fichier dans lequel j'écris tout d'abord, puis que je souhaite relire pour réécrire dedans. En effet, si l'écriture de base ne pose aucun problème, je n'arrive pas, et ce même si j'essaye depuis un autre programme, à lire puis à écrire ce fichier en écrasement.
Voici le fichier que je voudrais lire puis sur lequel je voulais réécrire :
Alors, bien entendu, ce "code" est étrange (et surtout non fonctionnel me diriez-vous), mais c'est le résultat d'un projet que j'essaye de réaliser, qui consiste à lire un fichier, voir si un print a pour argument une chaîne de plus de 80 caractères (qui est la taille d'un invite de commande sous Windows), et à le séparer et 2 print différents (bien que l'on aurait tout aussi bien pu mettre \n au milieu, mais c'est plus lisible ainsi je trouve).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 use strict use warnings lvkdnvlf: print "blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla\n" print "blabla blabla blabla blabla blabla blabla blabla blabla" iubndkjb print "blabla" btrbr fb rbrbrbfb yigikbj a a
Et voici comment j'ai essayé de m'y prendre (le but étant de rajouter des ; à la fin de chaque ligne) :
Le problème, c'est que si je l'ouvre en ajout, et bien, il ajoute, et que si je l'ouvre en écrasement, il ne m'affiche rien et considère que le fichier est vide. En revanche, ce qu'il ajoute en mode ajout est bien ce que je veux qu'il écrive.
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 use strict; use warnings; my $filename = "Test_Recopiage.pl"; open (my $fh, '+>', $filename) or die "Impossible d'ouvrir le fichier '$filename' en lecture"; my $compteur = 1; while (my $ligne = <$fh>) { print $fh "$ligne;"; ++$compteur; } close $fh;
Je sais bien que ce code n'est pas bon car les caractères \n vont m'ennuyer, mais j'aimerais au moins comprendre pourquoi je ne peux pas lire et écrire dans un fichier, ou bien comment faudrait-il faire pour y arriver.
Merci d'avance !
Partager