Mie Nov 28, 2007 5:16 am
|
 |
cpinilla
Perlero Nuevo

|
Registrado: 26 Nov 2007
Mensajes: 9
|
|
| Leer de archivo |
|
|
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. |
|
|
|

Mie Nov 28, 2007 5:36 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|
Mie Nov 28, 2007 5:43 am
|
 |
cpinilla
Perlero Nuevo

|
Registrado: 26 Nov 2007
Mensajes: 9
|
|
|
|
|
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é. |
|
Vie Nov 30, 2007 6:10 am
|
 |
Jenda
Perlero Frecuente

|
Registrado: 29 Oct 2007
Mensajes: 104
Ubicación: Praga, Republica Checa
|
|
| Re: Leer de archivo |
|
|
| 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. |
|
Vie Nov 30, 2007 7:06 am
|
 |
cpinilla
Perlero Nuevo

|
Registrado: 26 Nov 2007
Mensajes: 9
|
|
| Leer de archivo |
|
|
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. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|