• Publicidad

Fichero no se crea

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Fichero no se crea

Notapor diegons92 » 2013-05-26 15:11 @674

¡Buenas! Soy nuevo en el foro y quería ver si me podíais echar un cable con un problema que tengo.

Veréis: desde un HTML, mando un parámetro (nombreusuario) a un archivo Perl, de este modo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $query = new CGI;
  2. my %FORM = $query->Vars;
  3. my $nombreusuario = $FORM{Usuario};
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Después, necesito leer un fichero línea a línea, y en caso de que en ese fichero encuentre el parámetro que leí del HTML, pues escriba más datos. Para ello quiero recorrer el fichero línea a línea y voy metiendo las líneas en otro nuevo fichero auxiliar, para luego convertir ese fichero en el anterior, de este modo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         $query->header,
  2.         $query->start_html("Almacenando"),
  3.  
  4.                 my $filename = '/etc/file';
  5.                 my $filename2 = '>/etc/file2';
  6.                 open INFILE,$filename;
  7.                 open INFILE2,$filename2;
  8.  
  9.                 while($linea = <INFILE>){
  10.                     chomp($linea);
  11.                     if($linea =~ "$nombreusuario:"){
  12.                         print INFILE2 "$nombreusuario\n";
  13.                     }else{
  14.                         print INFILE2 "$linea\n";
  15.                      }
  16.                 }
  17.                 close INFILE2;
  18.                 close INFILE;
  19.                 move("/etc/file2","/etc/file");
  20.  
  21. exit(1);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

El caso es que es como si el fichero "file2" no lo crease, y no se por qué.

¡¡Un saludo!!
diegons92
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2013-05-26 14:56 @664

Publicidad

Re: Fichero no se crea

Notapor explorer » 2013-05-26 15:48 @700

Bienvenido a los foros de Perl en Español, diegons92.

Cambia la línea 11
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.                     if($linea =~ /$nombreusuario:/){
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Los delimitadores de la expresión regular debe ser '/', o cualquier otro, pero entonces hay que poner 'm' delante de ellos.

El código lo puedes simplificar un poco...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.                 my $filename  = '/etc/file';
  2.                 my @lineas;
  3.  
  4.                 open INFILE, '<', $filename;
  5.                 while (my $linea = <INFILE>) {
  6.                     if ($linea =~ /$nombreusuario:/ ) {
  7.                         $linea =  "$nombreusuario\n";
  8.                     }
  9.                     push @lineas, $linea;
  10.                 }
  11.                 close INFILE;
  12.  
  13.                 open  INFILE2, '>', $filename;
  14.                 print INFILE2 @lineas;
  15.                 close INFILE2;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Estamos guardando las modificaciones en memoria, y luego escribimos todo el archivo modificado de golpe.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Fichero no se crea

Notapor diegons92 » 2013-05-26 16:16 @719

¡¡Muchas gracias!! ¡Me sirvió!
Después de darle muchas vueltas, no se me había ocurrido esa forma de hacerlo :D
diegons92
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2013-05-26 14:56 @664


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados

cron