15.03.2020 Views

perl-language-es

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

my @array = ("Hello"); # Creating array, assigning value from a list

my $array_reference = \@array;

Estos pueden ser creados más cortos de la siguiente manera:

my $other_array_reference = ["Hello"];

La modificación / uso de las referencias de matriz requiere primero la eliminación de referencias.

my @contents = @{ $array_reference };

my @contents = @$array_reference;

# Prefix notation

# Braces can be left out

5.24.0

Nueva sintaxis de desreferenciación de postfix, disponible por defecto desde v5.24

use v5.24;

my @contents = $array_reference->@*; # New postfix notation

Al acceder a los contenidos de un arrayref por índice, puede utilizar el -> azúcar sintáctica.

my @array = qw(one two three); my $arrayref = [ qw(one two three) ]

my $one = $array[0];

my $one = $arrayref->[0];

A diferencia de los arrays, arrayrefs puede ser anidado:

my @array = ( (1, 0), (0, 1) ) # ONE array of FOUR elements: (1, 0, 0, 1)

my @matrix = ( [1, 0], [0, 1] ) # an array of two arrayrefs

my $matrix = [ [0, 1], [1, 0] ] # an arrayref of arrayrefs

# There is no namespace conflict between scalars, arrays and hashes

# so @matrix and $matrix _both_ exist at this point and hold different values.

my @diagonal_1 = ($matrix[0]->[1], $matrix[1]->[0]) # uses @matrix

my @diagonal_2 = ($matrix->[0]->[1], $matrix->[1]->[0]) # uses $matrix

# Since chained []- and {}-access can only happen on references, you can

# omit some of those arrows.

my $corner_1 = $matrix[0][1]; # uses @matrix;

my $corner_2 = $matrix->[0][1]; # uses $matrix;

Cuando se usa como booleano, las referencias son siempre ciertas.

Hash Referencias

Las referencias de hash son escalares que contienen un puntero a la ubicación de memoria que

contiene los datos de un hash. Debido a que el escalar apunta directamente al hash, cuando se

pasa a una subrutina, los cambios realizados en el hash no son locales a la subrutina como

ocurre con un hash normal, sino que son globales.

Primero, examinemos lo que sucede cuando pasas un hash normal a una subrutina y lo

modificamos allí:

https://riptutorial.com/es/home 121

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!