Tema: Shift
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/07/2010, 10:20
abcdefghi
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Shift

En Perl las cosas nunca son lo que parece, como te ha comentado Jferrero,
Código:
shift
extrae el primer valor de un array, despojando al mismo de ese valor.

Código:
@array = (1,2,3,4);
print shift(@array); # devolvera 1
print "@array"; # devolvera los valores restantes 2 3 4
En perl existen dos variables mágicas $_ y @_, esta están presente en distintos contextos que con el tiempo sabrás.

Cuando llamas a una subrutina y le pasas algunas variables, esta son cargadas al array @_, por ejemplo:

Código:
subrutina('uno','dos','tres');
Anterior mente llamamos a subrutina con nombre subrutina y le pasamos tres valores, ahora verás que dentro de la subrutina estará el array @_ cargado con dichos valores, por ejemplo:
Código:
sub subrutina{

   print "@_"; # mostrará uno dos tres
   
   # si aplicamos un shift y no le asignamos ningun array, perl utilizará el array mágico, por tanto si hacemos:

    print shift; # devolvera uno
 
   # y
 
   print "@_"; # ahora devolvera dos tres

}
En el caso de
Código:
$self
es una convensión y viene a ser el objeto de la clase inicializada, siempre es el primero que vas a recibir, es probable que conozcas PHP $self es equivalente a $this, solamente que en Perl tenés que extraerlo del array mágico.


Pruebalo para ver lo que te indico.

Saludos.

Última edición por abcdefghi; 10/07/2010 a las 10:27