Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Leer de archivo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Mie Nov 28, 2007 5:16 am
cpinilla
Perlero Nuevo
Perlero Nuevo
Registrado: 26 Nov 2007
Mensajes: 9
Leer de archivo Responder citando

Hola a todos, tengo un problemilla con un trozo de código que hasta hoy me funcionaba perfectamente.

Perl:
my $p;
open(WHOAMI, "/cvsaux/controlScripts/conf/noFBusers.conf") || die "Cannot open noFBusers\n";
while ($p = <WHOAMI> {
chop ($p);

        if ($p eq $whoami) {
                print "\n\n";
                print "OK $whoami is an authorized user\n\n";
                exit 0;
        }
        else { 
        }
}
print "\n\n";
print "ERROR $whoami is NOT an authorized user\n\n";
close (WHOAMI);


Hasta día de hoy este código habría el archivo, me leía la primera línea, luego compara con $whoami y así línea por línea del archivo.

Pero ahora he querido usar este trozo de código en otro sitio y no sé por qué pero me lee el archivo entero, y ya en la primera iteración tengo todas las líneas del archivo cargadas en $p. Y si pruebo con $_ me hace lo mismo.

Les escribo porque me estoy volviendo loco de buscar y no encuentro el motivo de por qué ahora me lee todo el fichero y no línea por línea.

Un saludo a los camellos.
Mensaje Mie Nov 28, 2007 5:36 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
Responder citando

Eso es (supongo) porque los finales de línea de ese fichero no coincide con lo indicado en la variable $/. O que esta variable ha sido modificada antes.

Más información, en perlvar.
Mensaje Mie Nov 28, 2007 5:43 am
cpinilla
Perlero Nuevo
Perlero Nuevo
Registrado: 26 Nov 2007
Mensajes: 9
Responder citando

Sospechaba que de alguna forma no entendía los saltos de línea del archivo pero no tengo ni idea de cómo se arregla eso.

OK, muchas gracias, lo consultaré.
Mensaje Vie Nov 30, 2007 6:10 am
Jenda
Perlero Frecuente
Perlero Frecuente
Registrado: 29 Oct 2007
Mensajes: 104
Ubicación: Praga, Republica Checa
Re: Leer de archivo Responder citando

cpinilla escribió:

Perl:

my $p;
open(WHOAMI, "/cvsaux/controlScripts/conf/noFBusers.conf") || die "Cannot open noFBusers\n";
while ($p = <WHOAMI> {
chop ($p);



Es mejor usar chomp() en este situación. chop() remueve un carácter, no le importa si es el \n o algo completamente diferente. chomp() remueve solo el \n. Eso puede ser importante si la última línea del fichero no acaba con \n. En este caso tu chop() remueve el último carácter del username.
Mensaje Vie Nov 30, 2007 7:06 am
cpinilla
Perlero Nuevo
Perlero Nuevo
Registrado: 26 Nov 2007
Mensajes: 9
Leer de archivo Responder citando

Si, eso lo tengo controlado ya que al final del archivo tengo una cadena de texto especial.

El problema era que un poco más arriba tenía la variable $/ modificada. Ya está arreglado.

Gracias por todo.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group