Tipos de variables en Perl

De ChuWiki

En perl hay tres tipos de variables:

  • Escalares. Las variables comienzan por $, como $variable. Aquí se representan cadenas de texto o número.
  • Arrays. Los arrays comienzan con @, como @variable. Puede meterse dentro lo que se quiera.
  • Hash. Las hash comienzan con %, como %variable. Tanto las variables como los datos pueden ser cualquier cosa.

No es necesario declarar previamente las variables. Se utilizan según se necesitan. Por defecto todas son globales y se ven desde todos los sitios del código. Para declarar variables locales, se pone my delante.


Escalares[editar]

Se asignan, sin declarar, según se necesitan.

$var1 = 33;
$var2 = "hola";
$var3 = "11";
my $var4 = "esta es local, no es globlal";

La conversión de número a string se hace automáticamente según se necesita

$var1 = 1;
$var2 = "3";
print $var1 + $var2;  # escribe la suma 4
print "\n";           # nueva línea
print $var1.$var2;    # concatena cadenas, escribe 13.

Si se usa una variable en un if, la variable es true si contiene algún valor distinto de 0 o de "". El false si contiene 0, "" o no está declarada.

$a="";
if ($a)   # esto es false
{
  ...
}

Arrays[editar]

Una variable array comienza con @. Se puede inicializar poniendo valores entre paréntesis

$b = "un valor";
@array = ( 1, "dos", $b );

Si imprimimos un array, se escribirán todos sus valores

print @array;  #escribe todo seguido "1dosun valor"

El último índice válido de un array se obtiene con $#array. Esto devuelve el último índice válido, no el número de elementos. Los ínidces empiezan en cero.

print $#array;   #escribe 2, ya que @array tiene tres elementos
                 #y los índices válidos son 0,1,2

Para acceder a los elementos de un array se utiliza el corchete.

print @array[1];
@array[2]="tres";

Podemos asignar un valor a un índice fuera de rango. Los rangos intermedios se rellenarán con valores nulos.

@array[5]="seis"; #esto no da error. Los indices 3 y 4 se rellenan con null

Se puede recorrer un array con un bucle for normal. Hay que fijarse que puesto que @#array devuelve el último índice válido, la comprobación en el bucle debe ser <=

for ($i=0; $i<=$#array; $i++)
{
   print "@array[$i]\n";
}

Otra forma es usar foreach así

foreach (@array)
{
   print "$_\n";
}

foreach recorre el array que se le pasa detrás y va metiendo cada uno de los valores del array en la variable $_

Para "resetar" un array y vaciar su número de elementos

@array = ();

Variables Hash[editar]

Las variables hash comienzan con %, como %hash. Sin embargo, salvo para inicializarlas, para acceder o modificar sus elementos se usan con @ como un array, pero en vez de corchetes [] se usan llaves {}

Se pueden inicializar de varias maneras. Una es como un array, en el que los elementos impares hacen de claves y los pares de datos

%hash = ( 1, "uno", 2, "dos", 3, "tres" );
print @hash{2}."\n";   # escribe dos
@hash{4}="cuatro";
print @hash{4}."\n";   # escribe cuatro

Otra forma más clara de inicializarlo es así

%hash = ( 1 => "uno",
          2 => "dos",
          3 => "tres" );

La función keys() nos permite obtener las claves de un hash para recorrerlo

%hash = ( 1 => "uno",
          2 => "dos",
          3 => "tres" );
@claves=keys(%hash);
foreach(@claves)
{
   print "$_\n";
}

Se pueden borrar elementos de un hash con delete

delete @hash{2};

Enlaces externos[editar]