Как сказал Бвмат, это ссылка на массив массивов ссылок.Прочитайте
$ man perlref
или
$ man perlreftut # this is a bit more straightforward
, если вы хотите узнать больше о ссылках.
Кстати, в fiew словах в Perl вы можете сделать:
@array = ( 1, 2 ); # declare an array
$array_reference = \@array; # take the reference to that array
$array_reference->[0] = 2; # overwrite 1st position of @array
$numbers = [ 3, 4 ]; # this is another valid array ref declaration. Note [ ] instead of ( )
то же самое происходит с хешами.
Кстати, в fiew словах в Perl вы можете сделать:
%hash = ( foo => 1, bar => 2 );
$hash_reference = \%hash;
$hash_reference->{foo} = 2;
$langs = { perl => 'cool', php => 'ugly' }; # this is another valid hash ref declaration. Note { } instead of ( )
И ... да, вы можете разыменоватьэти ссылки.
%{ $hash_reference }
будет обрабатываться как хэш, поэтому, если вы хотите напечатать ключи $langs
выше, вы можете сделать:
print $_, "\n" foreach ( keys %{ $langs } );
Для разыменованияссылка на массив использовать @{ }
вместо %{ }
.Даже sub
может быть разыменовано.
sub foo
{
print "hello world\n";
}
my %hash = ( call => \&foo );
&{ $hash{call} }; # this allows you to call the sub foo