Debido a lo poco que se ve
Perl en la sección me he decidido a escribir una pequeña introducción, ya que pienso que casi no se trata este lenguaje en esta sección, y es un lenguaje muy potente y flexible.
¿Como instalar el interprete de Perl?Lo podemos descargar de aquí:
http://www.perl.org/get.htmlPara
Windows disponemos de dos interpretes
ActiveState y
StrawBerry. Personalmente uso
ActiveState pero esto como todo, va por gustos.
Nota: En sistemas
Linux esta instalado por defecto, así que no lo tendrás que instalar.
¿Ya tengo instalado el interprete pero... Como ejecuto mis scripts?En primer lugar todos los scripts en
Perl tienen que tener la extensión .
pl. Para ejecutarlo es tan facil como hacer doble clic sobre el script o bien desde la linea de comandos:
perl miscript.plPara probar podéis crear este pequeño script con el famoso mensaje "Hola Mundo!"
#!/usr/bin/perl
print "Hola Mundo!"; # Imprimimos en pantalla el saludo
Aclaraciones rápidas sobre el script de arriba:
-Todas las lineas de código acaban con el punto y coma (';').
-Los comentarios se escriben con la almohadilla ('#')
-La linea
1 indica la ruta del interprete (En principio esto es solo necesario para sistemas Linux).
Dicho esto, ¡empecemos!.
VariablesLas variables se declaran con
my y tienen que tener delante del nombre el símbolo del dolar ('$'). Además en este lenguaje no hay tipos de variables, es decir, se declara igual una variable que contiene un número que una que tiene una cadena.
Ejemplos de declaraciones de variables:
#!/usr/bin/perl
my $cadena = "hola soy una cadena\n";
my $numero = 1;
my $n1 = 2;
my $n2 = 3;
print $n1 + $n2 . "\n"; # suma e imprime los valores de las variables print $n1 . $n2 . "\n"; # Concatena los numeros (Los tata como cadena) print "$n1$n2\n"; # Otra forma de hacer lo de la linea de arriba
Algunos datos del código de arriba:
-En las lineas 3,11,12 y 13 vemos los caracteres
'\n', dichos caracteres indican salto de linea.
-El operador punto (".") concatena cadenas (Si, el interprete se ha encargado de pasar el número a cadena antes de unirlo).
-La linea 12 hace exactamente lo mismo que la linea 13.
-
exit termina la ejecución del script (Esto no es necesario ponerlo, pero es bueno saberlo.)
ArraysLos arrays también se declaran con
my, pero en vez de usar el dolar, se usa el arroba ('@').
Ejemplo de declaración de un array:
#!/usr/bin/perl
my @array; # array sin inicializar
my @animales = ('Gato','Perro','Pez'); # array inicializado
print "$animales[0]\n"; #imprimimos el primer elemento del array 'Gato' print "$animales[1]\n"; #imprimimos el segundo elemento del array 'Perro'
Aclaraciones:
-El primer elemento de un array es el 0, no el no como podemos comprobar en la linea 6.
-Para acceder a los elementos se usa el simbolo del dolar (
$animales[0]).
En
Perl existen funciones como
push o
pop, para manejar los arrays.
push introduce elementos al array y
pop los saca, ejemplo:
#!/usr/bin/perl
my @animales = ('Gato','Perro','Pez'); # array inicializado
print "El ultimo animal de la lista es el: $animales[2]\n";
print "Ahora el ultimo animal es: $animales[3]\n";
print "Ahora el animal $animales[3] no esta\n"; print "El ultimo animal ahora es: $animales[1]\n";
Hay muchas mas funciones, podemos encontrar algunas más explicadas
aquíOperadores aritméticosEsto suele variar poco de un lenguaje de programación a otro.
Suma: +
Resta: -
Multiplicación: *
División: /
Potencia: **
Residuo de una operación: %
Perl, puede convertir número a cadena y viceversa, ejemplo:
#!/usr/bin/perl
my $n1 = 5;
my $n2 = 3;
my $c1 = '5';
my $c2 = '5';
print "Trata los numeros como cadena: $n1$n2\n"; # devolvera 85 print $c1 + $c2 . "\n"; # devolvera 10
También existen, al igual que en
C y C++ los operadores de incremento y decremento:
my $var = 1;
$var++; # Incremento en uno el valor de la variable
$var--; # Decremento en uno de valor de la variable
Operadores Lógicosand: &&
or: ||
not: !
Estos operadores se usan casi siempre como complemento de la sentencia
if, pero en ese lenguaje tienen otros usos como por ejemplo indicar errores:
open(FILE
,"archivo.txt") || die("No se puedo abrir el archivo");
En este caso si no abre el archivo muestra el mensaje de error.
ifEsta sentencia nos sirve para controlar el flujo del programa, ej:
#!/usr/bin/perl
my $var = 1;
if ($var == 1) # sentencia if
{
# si $var es igual a uno se ejecuta lo que esta aqui
print "\$var es igual a 1\n"; }else{
# si no es igual a uno se ejecuta esto
print "\$var NO tiene valor 1\n"; }
system("PAUSE"); # con system enviamos comandos al sistema
En las lineas 8 y 11 aparece un '\' delante de
$var, ese símbolo es de
escape, si no estuviera nos motraría el valor de la variable:
#!/usr/bin/perl
my $var = 1;
Con la función
system enviamos un comando al sistema, en este caso (para
Windows) realiza una pausa, si no pusiéramos la línea
system("PAUSE") al ejecutarse el programa la consola desaparecería.
También podemos realizar comparaciones de esta manera:
if (Comparacion) # se realiza la comparacion
{
}elsif (comparacion) # si no se cumple la de arriba se vuelve a ralizar otra comparacion
{
}elsif (Comparacion) # Si no se cumple la de arriba de vuelve a realizar otra comparacion
{
}else{ # Si no se cumple ninguna de las anteriores se ejecuta esta
}
Ejemplo práctico:
#!/usr/bin/perl
my $var = 1;
if ($var == 2) # se realiza la comparacion
{
}elsif ($var == 3) # si no se cumple la de arriba se vuelve a ralizar otra comparacion
{
}elsif ($var == 3) # Si no se cumple la de arriba de vuelve a realizar otra comparacion
{
}else{ # Si no se cumple ninguna de las anteriores se ejecuta esta
print "No es igual a ninguna de las anteriores\n"; }
Ahora vamos a ver los operadores de los que disponemos para realizar dichas comparaciones:
Tipo Númerico CadenaMayor A > gt
Menor A < lt
Igual A == eq
No Igual A != ne
Menor o Igual A <= le
Mayor o Igual A >= ge
No podemos comparar una cadena con el equivalente numerico ni viceversa, ej:
my $c1 = "hola";
my $c2 = "adios";
my $n1 = 1;
my $n2 = 2;
if ($c1 eq $c2) # sentencia CORRECTA
{
# Si son iguales de ejecuta
}
if ($c1 == $c2) # sentencia ERRONEA
{
# Si son iguales de ejecuta
}
if ($n1 eq $n2) # sentencia ERRONEA
{
# Si son iguales de ejecuta
}
if ($n1 == $n2) # sentencia CORRECTA
{
# Si son iguales de ejecuta
}
for Los bucles
for se pueden usar como en
C:
for (my $i = 0; $i<10; $i++) # se repite 10 veces
{
}
O de esta manera, mas característica de este lenguaje:
for my $i (1..10) # Se repite 10 veces
{
}
whileEste bucle se repite hasta que la sentencia sea falsa, de tal manera que esto:
while (1)
{
}
Sería un bucle infinito.
Otro ejemplo que suma tres números:
my $i = 0;
my $num = 0;
while ($i<3)
{
$num = $num + <STDIN>;
#$num += <STDIN>; # esta linea hace exáctamente lo mismo que lo de arriba.
$i++;
}
print "Suma totalde los numeros: $num\n";
<STDIN> lo que hace es leer datos de entrada.