Introducción:
En este tutorial les mostrare como crear loops para sus programas. Cubriré el uso de lo siguiente:
- - while
- - until
- - for
- - foreach
Loops
Los loops son una gran pieza de programación. El loop en sus varias maneras te permite correr un pedazo de codigo varias veces hasta que una cierta condición es alcanzada y entonces el loop para.
Nota: Cuando crees loops asegurate de que haya algo que frene al loop, o si no contunaría indefinidamente.
Los loops pueden ser usados de varias formas, por ejemplo cuando se combinan con expresiones regulares, puedes buscar algo en una lista haciendo que el loop búsque en cada elemento de la lista, y si es verdadera nuestra expresión entonces terminar ahí el loop.
WHILE
El comando "while" correra repetidamente un pedazo de codigo mientras su expresión condicional sea verdadera.
Su sintaxis es como la siguiente:
while(condicion){
bloque de codigo
}
Por ejemplo si quisieras asegurarte que una variable tuviera un cierto tamaño, podrías agrandarla de la siguiente manera:
while (lenght($valor) < 10){
$valor = "0$valor";
}
Esto agregaría un 0 a la variable hasta que su largo no sea mas de 10 digitos.
UNTIL
Este es básicamente similiar al loop de while. Ejecutará un bloque de código hasta que la expresión condicional se haga verdadera.
Tiene la misma sintaxis que el loop de while y puede ser usado de la misma manera. Por ejemplo este código hará lo mismo que el visto anteriormente:
until (length($valor) = 10){
$valor = "0$valor";
}
Estos dos loops tienen un bloque extra al final llamado "continue". Este bloque será ejecutado antes de que el loop inicié aún cuando en el bloque principal se salte (que puedes lograr con el comando "next").
Por ejemplo:
$i = 1;
while ($i < 10){
#bloque de codigo
}
continue{
$i++;
}
Esto correra por el bloque de codigo 10 veces antes de salir.
FOR
Este loop tiene tres expresiones separadas por un punto y coma en la primera parte. Estas son, la inicialización, la condicional y la re-inicializasión.
Por ejemplo:
for ($i = 1; $i < 10; $i++){
#bloque de codigo
}
Este hará lo mismo que el loop de while mencionado anteriormente, pero con menos lineas de codigo.
Tú solo debes de escoger cual es el mas adecuado para tu programa.
FOREACH
Este loop se ejecutará sobre una lista de variables.
Por ejemplo:
foreach $par (@pares){
#bloque de codigo
}
En este codigo perl leerá la lista en "@pares" y asignara la variable "$par" al elemento en turno. Haciendo esto hasta que se acabe la lista.
Por ejemplo:
@lista = ("manzana", "zanahoria", "melon", "fresa");
foreach $elemento (@lista){
print "$elemento\n";
}
Este pedazo de codigo imprimira cada elemento de la lista contenido en "@lista".
Nota final
Cuando estes creando tu código, siempre decide que tipo de loop vaz a usar para cada circunstancia de esta manera puedes hacer que tu código sea fácil de leer y más rápido al correr.
Codigo Final
#!/usr/bin/perl -w
use strict;
&loop_while;
&loop_until;
&loop_for;
&loop_foreach;
exit(1);
sub loop_while{
#Imprimimos el inicio de loop
print "\tESTAMOS EN EL LOOP WHILE\n";
#Iniciamos variable
my $a = 1;
#Iniciamos el loop
while ($a < 5){ #Hacemos el loop mientras $a sea menor que 5
print "\$a = $a\n"; #Imprimimos el valor de $a
$a++; #Sumamos uno al valor de $a
}
print "\n\n"; #Imprimimos unos espacios
}
sub loop_until{
#Imprimimos el inicio de loop
print "\tESTAMOS EN EL LOOP DE UNTIL\n";
#Iniciamos variable
my $b = "a";
until ($b eq "f"){ #Creamos el loop hasta que $b sea igual a f
print "\$b = $b\n"; #Imprimimos el valor de $b
$b++; #Sumamos uno a $b
}
print "\n\n"; #Imprimimos unos espacios
}
sub loop_for{
#Imprimimos el inicio del loop
print "\tESTAMOS EN EL LOOP DE FOR\n";
my $c;
for($c = 10; $c != 0; $c--){ #Inicializamos $c, hacemos la condicional
#de que $c no sea 0
#y le restamos uno cada vez
print "\$c = $c\n"; #Imprimimos el valor de $c
}
print "\n\n"; #Imprimimos unos espacios
}
sub loop_foreach{
#Hacemos una lista
my @mi_texto = ("Enrique", "Manuel", "Carlos", "Rodrigo", "Pepe", "Max",
"Javier", "Luis", "Jaime", "Daniel");
#Nuestro nombre a buscar
my $mi_sustituto = "Pepe";
#Imprimimos inicio de loop
print "\tESTAMOS EN EL LOOP DE FOREACH\n";
foreach my $texto(@mi_texto){ #Iniciamos la busqueda de cada elemento
if($texto eq $mi_sustituto){ #Si la linea es igual a nuestro nombre a
#sustituir
print "nombre sustituido\n"; #Imprimos esto
}else{ #de lo contrario
print "$texto\n"; #Imprimimos el nombre
}
}
}