Una lista de expresiónes entre corchetes como:
[ 'e1', 'e2', 'e3'];se denomina array anónimo. La expresión devuelve una referencia a un
array con esos elementos. Así es posible
asignarlo a una variable escalar:
$rb = [ 'e1', 'e2', 'e3'];Observe el uso de corchetes en vez de paréntesis. Aqui el array no tiene nombre, quien tiene nombre es la referencia. Por supuesto,
@$rb denota al array referido.
Lo mismo puede hacerse con los hashes.
en vez de corchetes se usan llaves:
$association = { cat =>"nap", dog=>"gone", mouse=>"ball"};
print "When I say 'cat', you say ...",$association->{cat};
En este caso se dice que tenemos un hash anónimo.
También puede hacerse con las subrutinas. Para tener una subrutina anónima basta con suprimir el nombre de la subrutina:
$subref = sub { my $x = shift; $x*$x; };
$rb = ( 'e1', 'e2', 'e3');¿Que contiene
$rb?
$association = ( cat =>"nap", dog=>"gone", mouse=>"ball");
print "When I say 'cat', you say ...",$association->{cat};
¿Que contiene $association?
$association = [ cat =>"nap", dog=>"gone", mouse=>"ball"];
$a = { @$association }->{mouse};
DB<1> opendir D,'./'
DB<2> @n = readdir D
DB<3> @nd = map { {N=>$_, D=>-M $_}} @n
DB<4> @snd = sort { $b->{D} <=> $a->{D} } @nd
DB<5> @sn = map { $_->{N} } @snd
Recuerde que -M retorna el tiempo desde la última modificación
en días.