Perl en Español

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

Un pequeño problema con el valor de una variable

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mar Jul 08, 2008 1:19 pm
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 212
Ubicación: Colombia
Un pequeño problema con el valor de una variable Responder citando

Tengo este código:

Perl:
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


Y me imprime esto:

Código:
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?
Mensaje Mar Jul 08, 2008 1:46 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4035
Ubicación: Valladolid, España
Responder citando

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:
Perl:
$i = -99;
for $i (0 .. 9 ) {
    print $i;
}
print $i; # Sale -99

for ($i=0; $i<10; $i++) {
    print $i;
}
print $i; # Sale 10
Mensaje Mar Jul 08, 2008 2:02 pm
danimera
Perlero Adicto
Perlero Adicto
Registrado: 23 Jun 2005
Mensajes: 212
Ubicación: Colombia
Responder citando

Ah, ya me decía yo que estaba por esos lados... sí, eso fue como si hiciera la variable local.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group