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