У Perl нет массивов с несколькими размерами.
У вас есть массив и каждый элемент этого массива - это ссылка на другой массив. Возможно, вы захотите прочитать около Perl References, так как это позволяет Perl создавать некоторые очень сложные структуры данных.
Многие люди думают о нем, как многомерный массив, и вы могли бы относиться к ней как таковой при определенных обстоятельствах. Однако я предпочитаю синтаксис ->
, который напоминает мне, что это всего лишь ссылка на ссылку.
$map[0]->[0] = 'a';
$map[0]->[1] = 'b';
$map[1]->[0] = 'c';
$map[1]->[1] = 'd';
Теперь я могу взять структуру данных друг от друга:
@map
: Это массив из двух элементов в нем, $map[0]
и $map[1]
.
$map[0]->[]
: Это ссылка на другой массив. Этот массив также имеет элементы в нем.
$map[1]->[]
: Это еще один ссылка еще один массив. В этом массиве есть два элемента.
Отметьте, что $map[1]->[]
означает, что $map[1]
содержит ссылку на массив. Thqt означает, что вы можете передать $map[1]
в качестве ссылки на этот внутренний массив.
mysub ($map[1]);
Вот простая программа:
#! /usr/bin/env perl
#
use strict;
use warnings;
use feature qw(say);
my @map;
$map[0]->[0] = 'a';
$map[0]->[1] = 'b';
$map[1]->[0] = 'c';
$map[1]->[1] = 'd';
mysub($map[1]);
sub mysub {
my $array_ref = shift;
my @array = @{ $array_ref }; # Dereference your reference
for my $index (0..$#array) {
say "\$map[1]->[$index] = $array[$index]";
}
}
Это печатает:
$map[1]->[0] = c
$map[1]->[1] = d
Теперь вы видите, почему мне нравится этот ->
синтаксис, хотя это на самом деле совершенно не нужны. Это помогает мне напоминать, с чем я имею дело.