• Publicidad

Un pequeño problema con el valor de una variable

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

Un pequeño problema con el valor de una variable

Notapor danimera » 2008-07-08 14:19 @638

Tengo este código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub localizar_foto{
    my($dia,$mes,$anno,$category,$cliente) = @_;
    my $db = "../".$cliente."/db/fotos.txt";
 
 
  @fotos =kread($db,0,0);



 $foto = "NO HAY FOTO3";

    foreach $foto(@fotos) {
    ($id,$nombre,$tumb,$categoria,$dia_foto,$mes_foto,$anno_foto) = split(/\|\|/, $foto);

print $categoria, "->",$category."===".$dia."->".$dia_foto.">>".$nombre;
print "<br>";
    #if ($categoria eq $category && $dia_foto == $dia && $anno == $anno_foto ){
    if ($dia_foto == $dia && $category == $categoria){
       print "Nombre: ".$nombre."<br>";
       $foto = "gato";
print $foto;
    }
   
}

    return $foto;  
 
}
1
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Y me imprime esto:

Código: Seleccionar todo
2->1===8->24>>24juniop2.jpg
2->1===8->8>>8juniop2.jpg
2->1===8->5>>5juniop2.jpg
2->1===8->27>>27mayop2.jpg
2->1===8->22>>22mayop2.jpg
2->1===8->19>>19mayop2.jpg
2->1===8->16>>16mayop2.jpg
2->1===8->15>>15mayop2.jpg
2->1===8->8>>8mayop2.jpg
1->1===8->24>>24junio.jpg
1->1===8->8>>8junio.jpg
Nombre: 8junio.jpg
gato1->1===8->5>>5junio.jpg
1->1===8->27>>27mayo.jpg
1->1===8->22>>22mayo.jpg
1->1===8->19>>19mayo.jpg
1->1===8->16>>16mayo.jpg
1->1===8->15>>15mayo.jpg
1->1===8->8>>8mayo.jpg
Nombre: 8mayo.jpg
gato

Resultado: NO HAY FOTO3


Se supone que el if se cumple dos veces por lo tanto debería retornarme "gato" pero no, lo que me retorna es "NO HAY FOTO3".

¿QUÉ PASA?
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Notapor explorer » 2008-07-08 14:46 @657

Las variables utilizadas en los bucles for y foreach son 'localizadas' dentro del bucle. Es decir, la variable $foto que usas en el foreach es la misma que usas fuera del bucle, pero dentro del bucle, su valor es salvaguardado, y cuando se termina el bucle, se recupera su valor.

Primer párrafo de
http://perldoc.perl.org/perlsyn.html#Foreach-Loops

Es como si hubieras hecho un local a la variable.

Ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$i = -99;
for $i (0 .. 9 ) {
    print $i;
}
print $i; # Sale -99

for ($i=0; $i<10; $i++) {
    print $i;
}
print $i; # Sale 10
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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 danimera » 2008-07-08 15:02 @668

Ah, ya me decía yo que estaba por esos lados... sí, eso fue como si hiciera la variable local.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado