• Publicidad

Leer de archivo

¿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.

Leer de archivo

Notapor cpinilla » 2007-11-28 06:16 @302

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

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
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);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


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.
cpinilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2007-11-26 11:11 @507

Publicidad

Notapor explorer » 2007-11-28 06:36 @317

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor cpinilla » 2007-11-28 06:43 @322

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é.
cpinilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2007-11-26 11:11 @507

Re: Leer de archivo

Notapor Jenda » 2007-11-30 07:10 @340

cpinilla escribiste:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $p;
open(WHOAMI, "/cvsaux/controlScripts/conf/noFBusers.conf") || die "Cannot open noFBusers\n";
while ($p = <WHOAMI> {
chop ($p);
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



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.
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Leer de archivo

Notapor cpinilla » 2007-11-30 08:06 @379

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.
cpinilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2007-11-26 11:11 @507


Volver a Intermedio

¿Quién está conectado?

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