17 julio 2007

Jugando con Perl (2)

Ahora vamos a ver alguna de las características básicas de Perl como lenguaje, para poder comparar con otros como C.

Un ejemplo de cómo dar valores a variables y mostrar estos valores podría ser éste:

$x = 1;
$nombre = 'Nacho';
print "Hola, $nombre. x vale $x\n";


Como se puede ver, las variables "normales" (lo que en Perl se suele llamar "variables escalares") tienen un nombre que comienza por el símbolo $, y no es necesario declararlas ni indicar qué tipo de datos almacenarán, sino que se deduce a partir del contexto.

Por ejemplo, $x = 1 hará que la variable "x" almacene un número entero, de valor 1. De igual modo, $nombre='Nacho' guarda la cadena de texto "Nacho" en la variable "nombre".

Las cadenas de texto se pueden delimitar entre comillas dobles o comillas simples. La diferencia es que si se encierra entre comillas dobles, se sustituirán las variables que haya en su interior, escribiendo el valor de la variable en vez del nombre.

Estas tres órdenes se podrían teclear en un fichero llamado ejemplo1.pl, y pondríamos este programa en funcionamiento con

perl ejemplo1.pl

El resultado que obtendríamos sería

Hola, Nacho. x vale 1

(Al igual que en C, existen ciertos caracteres especiales, como el \n que nos permite avanzar de línea).


Eso de que no sea necesario declarar variables tiene su parte negativa: en este programa

$nombre = 'Nacho';
print "Bienvenido, $nombr.";

lo que se muestra en pantalla no es "Bienvenido, Nacho." sino "Bienvenido, .", porque hemos escrito mal el nombre de la variable.

(para evitar estos problemas, se puede obligar a que haya que declarar variables, ya veremos cómo).


Muchas de las estructuras básicas (comparaciones, bucles) recuerdan mucho a las de otros lenguajes como C. Un ejemplo podría ser:

$x = 5;
if ($x == 5) { print "x vale 5\n"; }

print "La tabla de multiplicar del 2 es:\n";
for ($i=1; $i<=10; $i++) {
print "2 x $i es " . $i*2 . "\n";
}

print "Y la tabla de multiplicar del 3 es:\n";
$i = 1;
while ($i<=10) {
print "3 x $i es " . $i*3 . "\n";
$i++;
}

La principal diferencia es que las llaves { y } después de las órdenes como "if" o como "for" son obligatorias, aunque sólo haya una orden en su interior. Por otra parte, el punto (.) se usa para crear una cadena formada por otras dos: $saludo = "Hola" . "Nacho"; haría que la variable "saludo" contuviese el texto "HolaNacho".

(Existen más variantes, como "unless" o "until", que veremos en la próxima entrega).