• Publicidad

else

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

else

Notapor rafa » 2005-06-20 06:06 @295

Hola, ando loco con esto que no me funciona y no veo el posible fallo.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $ip = $ENV{'REMOTE_ADDR'};
  2. $_ = "$ip";
  3. @numeros = split(/\./);
  4.  
  5. open(DATA,"online_provincias.txt");
  6. while(<DATA>){
  7.     @C = split (/;/);
  8.     if ($C[0] eq "$numeros[1]") {
  9.         $provincias = "$C[1]";
  10.     }else{
  11.         $provincias = "No"
  12.     }
  13. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Siempre imprime "No", aunque se cumpla la condición.

Los datos de la base están así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
27;Lugo
28;Madrid
29;Málaga
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

y $numeros[1] es 28.

Os doy las gracias anticipadas.
Un saludo.
rafa
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2004-05-14 05:04 @252

Publicidad

Notapor macgregor » 2005-06-20 08:29 @395

Hola. Igual es una tontería, pero juraría que en la comparación del if no deberías utilizar el "eq" si no un "==" ya que comparas números, no strings.

No pongas las variables entre comillas al hacer asignaciones o comparaciones.

$_ = $ip;
$C[0] == $numeros[1]

Espero que sea eso.

Un saludo.

MAC.
MACGREGOR [TM]
Avatar de Usuario
macgregor
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2004-12-09 07:32 @355
Ubicación: españa

Notapor kidd » 2005-06-20 08:48 @408

Hola.

Lo que sucede es que cuando se cumple la equivalencia debes de salirte del loop:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open( DATA, "online_provincias.txt" );
  2. while (<DATA>) {
  3.     @C = split(/;/);
  4.     if ( $C[0] eq $numeros[1] ) {
  5.         $provincias = $C[1];
  6.         last;
  7.     }
  8.     else {
  9.         $provincias = "No";
  10.     }
  11. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Teniendo los siguientes datos, al hacer el loop tu variable $provincias iba cambiando de valor, por ejemplo, al buscar el número 28 usando el código como lo tenías hace lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
27;Lugo  $provincias = "No";
28;Madrid $provincias = "$C[1]";
29;Málaga  $provincias = "No";

RESULTADO: $provincias = "No";
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Pero si ponemos el last, entonces hace esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
27;Lugo  $provincias = "No";
28;Madrid $provincias = "$C[1]"; last;

RESULTADO: $provincias = "$C[1]";
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: else

Notapor rafa » 2005-06-21 04:49 @242

Muchas gracias a ambos, con las modificaciones que me habéis dicho y algún retoque que he dado a la consulta ya me funciona bien.

Quité las "" a $ip y puse el last y me va bien.

Quedó así ahora:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $ip      = $ENV{'REMOTE_ADDR'};
  2. $_       = $ip;
  3. @numeros = split(/\./);
  4.  
  5. open( IN, "online_provincias.txt" );
  6. while (<IN>) {
  7.     @B = split(/;/);
  8.     if ( $B[0] eq "$numeros[1]" ) {
  9.         $nombre = "$B[1]" . "-" . "Área Pública";
  10.     }
  11. }
  12.  
  13. open( DATA, "claves_control.txt" );
  14. while (<DATA>) {
  15.     @C = split(/;/);
  16.     my $numero = "$numeros[1].$numeros[2].$numeros[3]";
  17.     if ( $C[1] eq "$numero" ) {
  18.         $provincias = $C[2];
  19.         last;
  20.     }
  21.     else {
  22.         $provincias = $nombre;
  23.     }
  24. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
rafa
Perlero nuevo
Perlero nuevo
 
Mensajes: 20
Registrado: 2004-05-14 05:04 @252


Volver a Básico

¿Quién está conectado?

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