Integridad de ficheros
Jose Ignacio
jopinet@writeme.com
Fri, 06 Mar 1998 13:24:07 +0100
Bueno a ver si ahora voy bien. Lo que quiero es leer todo el fichero,
modificar una variable y volver a
escribir todo el fichero. He recibido varios mails con lo cual observo
que es
un problema común a varias
personas
#!/bin/perl
$in = $ENV{QUERY_STRING}; #aqui paso la variable que quiero modificar
$LOCK_SH = 1;
$LOCK_EX = 2; #nadie puede tocar el fichero, EXCEPTO YO SUPONGO
$LOCK_NB = 4; # ESTE PARA QUE ES ????
$LOCK_UN = 8;
use FileHandle;
open(FF,'+<eventos2.dat'); # Asi no me escribeeee .Lo tengo que abrir
más
tarde para sobreescribir
#FF->autoflush(1); # Para evitar líos con buffers
flock(FF,$LOCK_EX); # Nadie puede tocar el fichero
while (<FF>) {
chop($primf=$_);
chop($numf=<FF>);
if ($primf eq $in) {
++$numf;
}
push (@kk, "$primf\n");
push (@kk, "$numf\n");
}
#Hasta aqui leo y modifico una variable. Como quiero sobreescribir el
fichero
con todos los datos
# vuelvo a abrirlo debajo. Existe otra forma ?? Me sigue manteniendo el
flock
al asociarlo FF de nuevo
open(FF,'>eventos2.dat');
for ($i=0;$i<=$#kk;$i++) {
print FF "$kk[$i]";
}
flock(FF,$LOCK_UN); # Libero el fichero Libere o no el fichero me
escribe
igual desde
close FF; #cualquier parte
GRACIAS A LOS QUE ME ESTAIS ECHANDO UNA MANO y sobre todo a Salvador
Jose Ignacio
--
Jose Ignacio - jopinet@writeme.com
--------============Webmaster============---------
Buscador JOPINET - http://www.jopinet.com
JopiBanner - Intercambio de banners - http://www.jopinet.com/jopibanner
Directorio Jose's WEB - http://www.jopinet.com