martes, 2 de abril de 2013

Perl: Arrays



Perl: Arrays

A continuación el manejo de arrays en Perl en forma resumida.
Al final del artículo un ejemplo para copiar/pegar e ir probando.

Inicializar un array

El arroba @ se refiere a todo el array, ejemplo @nombre_array es todo el array.
Range operator .. , se utiliza para definiciones de un rango de valores, ejemplo (1..5) es para valores de uno a cinco.
Operador qw. El operador qw permite el uso de valores sin utilizar comas y comillas.
@arreglo= qw (uno dos tres) es lo mismo que @arreglo=(“uno”, “dos”, “tres”).

Ejemplos de inicializaciones
  • @arreglo= qw (un dos tres). Cargar valores en forma de lista.
  • @arreglo=(1..5). Cargar los números del uno al cinco.
  • @arreglo1=@arreglo2. Copiar un array en otro.

Acceder a los valores de un array

$#nombre_array indica la posición del último elemento de un arreglo, comenzando desde cero.
$arreglo[índice] Acceder a un elemento del arreglo.
$arreglo[índice]=0 Asignar valor cero a un arreglo.

***** El uso de índices negativos cuenta desde el final del array.

Asignación de valores a variables

Se pueden asignar valores a variables de la siguiente forma:
($fred,$barney,$dino)=(“peble”,”nada”,undef)


Si se colocan valores diferentes de cada lado se tiene lo siguiente:
($fred,$barney)=(“peble”,”nada”,undef) dos variables, un valor ignorado “el último”.
($fred,$barney,$dino)=(“peble”,”nada”) a $dino se le asigna undef

Funciones para acceso a arrays

pop, vacía un array, si el array está vacío entonces entrega undef.
push, inserta un valor al arreglo, push(@arreglo,0) o puede ser push @arreglo,0 sin los paréntesis.
shift, obtiene un elemento del array el primero de la lista.
unshift, agrega elementos a un array.

@arreglo = qw / uno dos tres /;
$m = shift(@arreglo); # $m obtiene gets "dino", @array now has ("fred", "barney")
$n = shift @array; # $n gets "fred", @array now has ("barney")
shift @array; # @array is now empty
$o = shift @array; # $o gets undef, @array is still empty
unshift(@array, 5); # @array now has the one-element list (5)
unshift @array, 4; # @array now has (4, 5)
@others = 1..3;
unshift @array, @others; # @array now has (1, 2, 3, 4, 5)

El operador reverse permite invertir el contenido de un array.

Archivo arreglo.pl
------------------------------ CORTAR AQUI ------------------------------
#!/usr/bin/perl



use 5.006;

use strict;

use warnings;



############################################

# Manejo de arrays

# Ejemplos basados en Schwartz - Learning Perl 5

############################################

# Definir un arreglo y recorrerlo.

############################################

my @arreglo = qw/ cinco seis uno dos tres cuatro /;

my $elemento;

foreach $elemento (@arreglo) {

    print "$elemento \n";

}

print "Cantidad elementos: $#arreglo \n"; 



#Ordena el array

my @ordenado= sort (@arreglo);

print "Ordena el arreglo alfabeticamente ->\n";

print " @ordenado \n";



#############################################

# Distintos tipos de asignaciones y uso de funciones

#############################################



@arreglo = qw /  uno dos tres cuatro /; 

my $primero = shift(@arreglo); # $primero recibe "uno"

my $segundo = shift @arreglo; # $segundo recibe "dos"



print "Valor primero-> $primero \n";

print "Valor segundo-> $segundo \n";



shift @arreglo; # @arreglo vacio

my  $sinValor = shift @arreglo; # $sinValor obtiene undef, @arreglo vacio

unshift(@arreglo, 5); #inserta el valor 5

unshift @arreglo, 4;  #inserta el valor 4

@ordenado = 1..3; #asigna del 1 al 3

unshift @arreglo, @ordenado; # inserta los elementos de @ordenado al array @arreglo (1, 2, 3, 4, 5) 

print "\n Valor final del array---> @arreglo \n";



------------------------------ CORTAR AQUI ------------------------------

No hay comentarios:

Publicar un comentario