Salut,
J'ai un probleme bizarre avec un de mes programmes. Je ne comprends vraiment pas !
Voila ce que je fais :
- j'ouvre avec sysopen en O_CREAT|O_RDWR
- je flock LOCK_EX
- seek(VAL, -100 , 2) # afin d'etre sur de ma placer avant le debut de la derniere ligne (une ligne ne fera jamais 100 octets)
- je lis les lignes une a une while(defined($l=<VAL> ))){ et en profite pour faire $lastlen = length($l)
- apres le while mon $lastlen contient donc la longueur de la derniere ligne lue
- seek(VAL, (0-$lastlen) , 2 )
- truncate(VAL, 0)
- print(VAL "nouvelle ligne\n" )
Les lignes rouges créent un gros probleme :
Ca rempli toutes les lignes precedant ma nouvelle ligne de données binaires ! (^@)
Je suis sur que ca vient de ces 2 lignes car elles sont dans un if et ca n'arrive que lorsque la condition est vrai.
(le but du if est que la nouvelle ligne remplace la derniere, dans les autres cas, on l'ajoute apres)
J'ai essayé d'appeler seek des 2 autres manieres (0 avec tell pour la position depuis le debut, et 1 pour la position actuelle qui est de tte facon déja la fin du fichier) et ca produit exactement la meme chose.
MERCI BEAUCOUP pour vos idées !
Message édité par MisterBark le 28-07-2010 à 06:32:44
---------------
La vie c'est comme une boite de chocolats, on ne sait jamais sur quoi on va tomber. (Forrest Gump)